PHP SSH2 回显到文件以停止会话
PHP SSH2 echo to file for stop session
我想创建一个 stop.sh 文件来停止屏幕会话。
$test = "screen_name";
这是命令:
kill -15 $(screen -ls | grep '[0-9]*\.$test' | sed -E 's/\s+([0-9]+)\..*//'`)
我想用 php ssh2_exec 创建这个文件,如下所示:
ssh2_exec($connection, "echo 'kill -15 $(screen -ls | grep '[0-9]*\.$test' | sed -E 's/\s+([0-9]+)\..*//')' > /home/test/stop.sh");
但我明白了:
sh: 1: Syntax error: "(" unexpected
我试过了:
kill -15 $(screen -ls | grep \'[0-9]*\.$test\' | sed -E \'s/\s+([0-9]+)\..*//\')
但这不起作用。
根据关于解析以 $
开头的双引号内任何内容的评论,您可以尝试使用 sprintf
并将整个命令用单引号括起来来构造命令字符串的替代方法,但是内含双引号。
$test='banana';
$cmd=sprintf('kill -15 $(screen -ls | grep "[0-9]*\.%s" | sed -E "s/\s+([0-9]+)\..*//") > /home/test/stop.sh', $test );
echo $cmd;
这会产生最终的命令字符串:
kill -15 $(screen -ls | grep "[0-9]*\.banana" | sed -E "s/\s+([0-9]+)\..*//") > /home/test/stop.sh
看起来不错,所以你可以这样做:
ssh2_exec( $connection, $cmd );
试试这个怎么样:
$text = 'echo \'kill -15 $(screen -ls | grep \'[0-9]*\.'$test.'\' | sed -E \'s/\s+([0-9]+)\..*//\')\' > /home/test/stop.sh\' ;
ssh2_exec($connection, $text);
我想创建一个 stop.sh 文件来停止屏幕会话。
$test = "screen_name";
这是命令:
kill -15 $(screen -ls | grep '[0-9]*\.$test' | sed -E 's/\s+([0-9]+)\..*//'`)
我想用 php ssh2_exec 创建这个文件,如下所示:
ssh2_exec($connection, "echo 'kill -15 $(screen -ls | grep '[0-9]*\.$test' | sed -E 's/\s+([0-9]+)\..*//')' > /home/test/stop.sh");
但我明白了:
sh: 1: Syntax error: "(" unexpected
我试过了:
kill -15 $(screen -ls | grep \'[0-9]*\.$test\' | sed -E \'s/\s+([0-9]+)\..*//\')
但这不起作用。
根据关于解析以 $
开头的双引号内任何内容的评论,您可以尝试使用 sprintf
并将整个命令用单引号括起来来构造命令字符串的替代方法,但是内含双引号。
$test='banana';
$cmd=sprintf('kill -15 $(screen -ls | grep "[0-9]*\.%s" | sed -E "s/\s+([0-9]+)\..*//") > /home/test/stop.sh', $test );
echo $cmd;
这会产生最终的命令字符串:
kill -15 $(screen -ls | grep "[0-9]*\.banana" | sed -E "s/\s+([0-9]+)\..*//") > /home/test/stop.sh
看起来不错,所以你可以这样做:
ssh2_exec( $connection, $cmd );
试试这个怎么样:
$text = 'echo \'kill -15 $(screen -ls | grep \'[0-9]*\.'$test.'\' | sed -E \'s/\s+([0-9]+)\..*//\')\' > /home/test/stop.sh\' ;
ssh2_exec($connection, $text);