我将带有IP地址的变量放入ssh2命令时遇到问题。
$somestring = 'ebtables -t filter -A FIREWALL -p IPv4 --ip-src '.$newifaceaddr.' --ip-proto tcp --ip-dport 22 -j ACCEPT';
$somevar = ssh2_exec($connection, $somestring);
命令有效但不完整。
预期的结果是" -p IPv4 --ip-src 192.168.1.247 --ip-proto tcp --ip-dport 22 -j ACCEPT
",但我得到的是" -p IPv4 --ip-src 192.168.1.247 -j CONTINUE
"
有趣的是,如果我将命令编写为没有变量的字符串,那么" ebtables -t filter -A FIREWALL -p IPv4 --ip-src 192.168.1.247 --ip-proto tcp --ip-dport 22 -j ACCEPT
"它完美地运作。当我打印一个变量和一个没有输出是相同的,所以我不知道这是什么问题。
我试过这个PHP SSH2 exec "$"并没有帮助和许多其他事情。 plx halp:<
答案 0 :(得分:0)
问题是,当我通过ssh2_exec从SSH2获取IP数据时,字符串的最后一个字符是我必须使用$newifaceaddr = preg_replace('/\s+/', '', $newifaceaddr);
删除的空白字符
之后,一切都很有效。