00001 <?php
00010 class ShellCmd
00011 {
00040 public static function exec($command_, $parameter_ = NULL)
00041 {
00042 $retval = '';
00043 $error = '';
00044
00045 $descriptorspec = array
00046 (
00047 0 => array('pipe', 'r'),
00048 1 => array('pipe', 'w'),
00049 2 => array('pipe', 'w')
00050 );
00051 $pipes = array();
00052
00053 $resource = proc_open($command_, $descriptorspec, $pipes, null, $_ENV);
00054 if (is_resource($resource))
00055 {
00056 $stdin = $pipes[0];
00057 $stdout = $pipes[1];
00058 $stderr = $pipes[2];
00059
00060
00061 if (!empty($parameter_))
00062 {
00063 fwrite($stdin, $parameter_);
00064 }
00065 fclose($stdin);
00066
00067
00068 while (!feof($stdout))
00069 {
00070 $retval .= fgets($stdout);
00071 }
00072 fclose($stdout);
00073
00074
00075 while (!feof($stderr))
00076 {
00077 $error .= fgets($stderr);
00078 }
00079 fclose($stderr);
00080
00081 $exitCode = proc_close($resource);
00082 if (0 != $exitCode)
00083 {
00084 $error .= ' Exit code: ' . $exitCode;
00085 }
00086 }
00087
00088 if (! empty($error))
00089 {
00090 throw new Exception($error);
00091 }
00092 else
00093 {
00094 return $retval;
00095 }
00096 }
00097
00108 public static function sshExec($remoteServer_, $command_)
00109 {
00110 return ShellCmd::exec('/usr/bin/ssh ' . $remoteServer_ . ' "' . $command_ . '"');
00111 }
00112
00129 public static function sshGet($remoteServer_, $from_, $to_)
00130 {
00131 ShellCmd::exec('/usr/bin/scp ' . $remoteServer_ . ':' . $from_ . ' ' . $to_);
00132 }
00133
00150 public static function sshPut($remoteServer_, $from_, $to_)
00151 {
00152 ShellCmd::exec('/usr/bin/scp ' . $from_ . ' ' . $remoteServer_ .':' . $to_);
00153 }
00154 }
00155
00156 ?>