使用PHP SSH2重启远程应用程序

时间:2013-04-19 12:00:50

标签: php ssh restart

如果使用PHP-SSH2在远程SSH服务器中存在目录'xyz',我该如何重新启动?

 <?php
 function fsmoke_ping($command_name1, $menu_name1, $title_name1, $host_ip1)
 {
    $connection = ssh2_connect('http://xxxx.com', 22);
    ssh2_auth_password($connection, 'username', 'password');     

    $sftp = ssh2_sftp($connection);
    $handle = file_exists('ssh2.sftp://' . $sftp . '/etc/xyz/devices/$menu_name1', 'w+')  or die('Cannot open file:  '.$menu_name1);


    $data = "++$menu_name1\nprobe = $command_name1\n menu = $menu_name1\n title = $title_name1\n host = $host_ip1";
    fwrite($handle, $data);
    fclose($handle);

    exec(`sudo /etc/init.d/xyz reload`);

}
?>

在此,

 exec(`sudo /etc/init.d/xyz reload`); 

不工作。我怎么能在这里重启?

3 个答案:

答案 0 :(得分:1)

显然ssh2_execexec将在您的本地计算机上执行语句。

答案 1 :(得分:1)

$connection = ssh2_connect('http://xxxx.com', 22);

为什么你有http://那里?

此外,还有一些带有sudo的问题,使用PECL ssh2扩展无法轻松解决。我建议改用phpseclib, a pure PHP SSH2 library。他们的网站上有一个如何使用sudo的具体例子:

http://phpseclib.sourceforge.net/ssh/examples.html#sudo

答案 2 :(得分:0)

在newfile中使用/etc/init.d/xyz reload(通过chmod 755)并在newfile nobody nobody中附加/etc/sudoers 并使用exec(sudo newfile reload);