Magellan Linux

Contents of /alx-src/branches/alx-web-060/include/common-functions.php

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2194 - (show annotations) (download)
Tue Jun 7 13:10:02 2011 UTC (12 years, 10 months ago) by niro
File size: 1679 byte(s)
-added sshdo() function instead of exec_on_client()
-added online() test function for functionality check with ppping.inc.php
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("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 "failure, could not connect\n";
15 }
16 else
17 {
18 if(!ssh2_auth_pubkey_file($con, $user, $pubkey_file, $privkey_file))
19 {
20 echo "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 "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, $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 ?>