如果使用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`);
不工作。我怎么能在这里重启?
答案 0 :(得分:1)
显然ssh2_exec。 exec
将在您的本地计算机上执行语句。
答案 1 :(得分:1)
$connection = ssh2_connect('http://xxxx.com', 22);
为什么你有http://那里?
此外,还有一些带有sudo的问题,使用PECL ssh2扩展无法轻松解决。我建议改用phpseclib, a pure PHP SSH2 library。他们的网站上有一个如何使用sudo的具体例子:
答案 2 :(得分:0)
在newfile中使用/etc/init.d/xyz reload
(通过chmod 755)并在newfile nobody nobody
中附加/etc/sudoers
并使用exec(sudo newfile reload);