PHP SSH2 执行程序“$”
PHP SSH2 exec "$"
我想知道如何在 PHP 中从 GET 命令 运行...
这是我的代码:
<?php
$msg = $_GET['msg'];
echo "$msg test";
if (!function_exists("ssh2_connect")) die("function ssh2_connect doesn't exist");
if(!($con = ssh2_connect("ip", 22))){
echo "fail: unable to establish connection\n";
} else {
// try to authenticate with username root, password secretpassword
if(!ssh2_auth_password($con, "root", "password")) {
echo "fail: unable to authenticate\n";
} else {
// allright, we're in!
echo "okay: logged in...\n";
// execute a command
if (!($stream = ssh2_exec($con, 'wall echo $msg'))) {
echo "fail: unable to execute command\n";
} else {
// collect returning data from command
stream_set_blocking($stream, true);
$data = "";
while ($buf = fread($stream,4096)) {
$data .= $buf;
}
fclose($stream);
}
}
}
?>
所以,它不会屏蔽我在 ?msg= 中所说的内容...它只是写空白,但是当我回显 $msg(就像我在代码顶部所做的那样)时,它会正常写入,你们知道吗问题在哪里?我已经尝试了 "echo $msg" 和 \"echo $msh\" 但同样的事情...谢谢并致以最诚挚的问候!
将 GET 变量传递给 ssh2_exec()
可能是一个巨大的安全问题。但忽略这一点,单引号会忽略变量 - 你需要双引号。
换句话说:改变这个
if (!($stream = ssh2_exec($con, 'wall echo $msg'))) {
至此
if (!($stream = ssh2_exec($con, "wall echo $msg"))) {
但是,我怀疑您正试图将 echo
用作 PHP 构造,而您真正只对 $msg
变量感兴趣。在那种情况下,你可以做
if (!($stream = ssh2_exec($con, "wall $msg"))) {
或
if (!($stream = ssh2_exec($con, 'wall ' . $msg))) {
我想知道如何在 PHP 中从 GET 命令 运行... 这是我的代码:
<?php
$msg = $_GET['msg'];
echo "$msg test";
if (!function_exists("ssh2_connect")) die("function ssh2_connect doesn't exist");
if(!($con = ssh2_connect("ip", 22))){
echo "fail: unable to establish connection\n";
} else {
// try to authenticate with username root, password secretpassword
if(!ssh2_auth_password($con, "root", "password")) {
echo "fail: unable to authenticate\n";
} else {
// allright, we're in!
echo "okay: logged in...\n";
// execute a command
if (!($stream = ssh2_exec($con, 'wall echo $msg'))) {
echo "fail: unable to execute command\n";
} else {
// collect returning data from command
stream_set_blocking($stream, true);
$data = "";
while ($buf = fread($stream,4096)) {
$data .= $buf;
}
fclose($stream);
}
}
}
?>
所以,它不会屏蔽我在 ?msg= 中所说的内容...它只是写空白,但是当我回显 $msg(就像我在代码顶部所做的那样)时,它会正常写入,你们知道吗问题在哪里?我已经尝试了 "echo $msg" 和 \"echo $msh\" 但同样的事情...谢谢并致以最诚挚的问候!
将 GET 变量传递给 ssh2_exec()
可能是一个巨大的安全问题。但忽略这一点,单引号会忽略变量 - 你需要双引号。
换句话说:改变这个
if (!($stream = ssh2_exec($con, 'wall echo $msg'))) {
至此
if (!($stream = ssh2_exec($con, "wall echo $msg"))) {
但是,我怀疑您正试图将 echo
用作 PHP 构造,而您真正只对 $msg
变量感兴趣。在那种情况下,你可以做
if (!($stream = ssh2_exec($con, "wall $msg"))) {
或
if (!($stream = ssh2_exec($con, 'wall ' . $msg))) {