PHP SSH2 exec "$"

Мне интересно, как я могу запустить команду из GET в PHP … вот мой код:

<?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))) {