Contents of /alx-src/tags/alx-web-0_6_0/include/common-functions.php
Parent Directory | Revision Log
Revision 2805 -
(show annotations)
(download)
Mon Aug 29 20:27:48 2011 UTC (13 years, 1 month ago) by niro
File size: 1729 byte(s)
Mon Aug 29 20:27:48 2011 UTC (13 years, 1 month ago) by niro
File size: 1729 byte(s)
tagged 'alx-web-0_6_0'
1 | <? |
2 | include('config.inc.php'); |
3 | include('ppping.inc.php'); |
4 | |
5 | function sshdo($cmd, $ip, $user="root") |
6 | { |
7 | global $privkey_file; |
8 | global $pubkey_file; |
9 | |
10 | if (!function_exists("ssh2_connect")) die("sshdo(): function ssh2_connect doesn't exist. You must install the ssh2 module from pecl library!"); |
11 | |
12 | if(!($con = ssh2_connect($ip, "22"))) |
13 | { |
14 | echo "sshdo(): failure, could not connect\n"; |
15 | } |
16 | else |
17 | { |
18 | if(!ssh2_auth_pubkey_file($con, $user, $pubkey_file, $privkey_file)) |
19 | { |
20 | echo "sshdo(): failure, could not login\n"; |
21 | } |
22 | else |
23 | { |
24 | //echo "logged in\n"; |
25 | |
26 | if(!($stream = ssh2_exec($con, "source /etc/profile; ".$cmd."; echo '__RETVAL__:'$?"))) |
27 | { |
28 | echo "sshdo(): failure, could not execute command '".$cmd."'\n"; |
29 | } |
30 | else |
31 | { |
32 | // collect stream data |
33 | stream_set_blocking($stream, true); |
34 | $data = ""; |
35 | while ($buf = fread($stream,4096)) |
36 | { |
37 | $data .= $buf; |
38 | //echo "buf=" .$buf."\n"; |
39 | } |
40 | fclose($stream); |
41 | # get the last element of data as retval |
42 | $retval = explode('__RETVAL__:', trim($data)); |
43 | } |
44 | } |
45 | } |
46 | |
47 | // return an array -> 0=retval, 1=data |
48 | return array($retval[1], $retval[0]); |
49 | } |
50 | |
51 | function ssh_editvar($var, $value, $file) |
52 | { |
53 | global $ip; |
54 | |
55 | // sed cmd: ssh -l root 10.11.12.13 'sed -i -e "s|^\(VAR=\).*|\1\"VALUE\"| FILE' |
56 | sshdo('if [[ ! -z $(grep "^'.$var.'=" '.$file.') ]]; then sed -i -e "s|^\('.$var.'=\).*|\1\"'.$value.'\"|" '.$file.' ;else echo "'.$var.'=\"'.$value.'\"" >> '.$file.'; fi', $ip); |
57 | } |
58 | |
59 | function online($ip) |
60 | { |
61 | $ping = new PPPing(); |
62 | $ping->hostname = $ip; |
63 | $ping->timeout = "0.3"; |
64 | $result = $ping->Ping(); |
65 | |
66 | if($result<0) |
67 | { |
68 | echo "error: ".$ping->strError($result); |
69 | $retval=1; |
70 | } |
71 | else |
72 | { |
73 | echo $result." ms"; |
74 | $retval=0; |
75 | } |
76 | return $retval; |
77 | } |
78 | ?> |