1

如果使用 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`); 

不工作。所以我怎么能在这里重新启动它?

4

3 回答 3

1

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

于 2013-04-19T12:03:44.810 回答
1
$connection = ssh2_connect('http://xxxx.com', 22);

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

此外,还有一些 sudo 的问题无法通过 PECL ssh2 扩展轻松解决。我建议改用phpseclib,一个纯 PHP SSH2 库。他们的网站上有一个关于如何使用 sudo 的具体示例:

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

于 2013-04-19T15:18:48.037 回答
0

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

于 2013-04-19T12:06:46.800 回答