1

我在将具有 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 暂停:<

4

1 回答 1

0

问题是当我通过 ssh2_exec 从 SSH2 获取 IP 数据时,字符串的最后一个字符是一些空白字符,我必须使用它来删除$newifaceaddr = preg_replace('/\s+/', '', $newifaceaddr);

之后一切正常。

于 2017-03-01T16:14:12.920 回答