phpseclib SSH2写入不执行长命令

I am trying to execute an SSH command to a device (firewall). Command is executed when the length is short. When the length is about 1000 characters, command is not being executed.

When I execute the command via putty, that is working as well.

After reading few solutions, I tried to set timeout to 5 seconds. Still, no help.

In the device logs, I can see SSH login and logout. But no activity.

I am using phpseclib ssh version 2.0

$ssh = new SSH2(ip_address);
$ssh->login($user, $password);
$ssh->write($command);
$ssh->setTimeout(5);
$ssh->read()
douqihou7537
douqihou7537 (phpseclib作者)而不是广播给每个人。
大约一年之前 回复
drvpvmz16241016
drvpvmz16241016 这个也没有运气。我的命令基本上是尝试将成员添加到强制防火墙中的组中。当它尝试添加更多成员时,防火墙上不会执行任何活动。当我添加少量成员时,活动成功。我使用SSH连接到防火墙并执行命令
大约一年之前 回复
dongwen7371
dongwen7371 -你得到一点数据:FW1-AMSTERDAM#。idk你期待什么,但我想这不是全部。没有命令它真的是一个猜谜游戏,但有一件事可能值得尝试:不要在一个巨大的$ssh->write()中发送命令,而是一次发送一个字符。例如。for($i=0;$i<strlen($command);$i++)$ssh->write($command[$i]);.这更类似于PuTTY的作用。很难确定OpenSSH的客户端做了什么,因为他们的客户端不像PuTTY那样创建日志。
大约一年之前 回复
dongzhimin2231
dongzhimin2231 请在这里找到成功案例的响应pastebin.com/xHjdKyMU和失败的一个在这里pastebin.com/VJLCvMjg我无法共享命令,因为它有一些机密的细节。但问题是,如果我直接从cli执行,那么问题不在于命令
大约一年之前 回复
dongzine3782
dongzine3782 -也许和我们一起分享日志?就像在pastebin.com上发布它们一样。PHP代码很好。idk是什么$命令,但这是高度相关的。日志会显示更多。我更喜欢日志但是,如果失败了,$command也会很好。如果你不能提供其中任何一个,那么我害怕说唯一能够帮助你的人就是你自己,我会投票决定关闭这个问题。
大约一年之前 回复
douang1243
douang1243 我检查了日志。频道连接都很好。NET_SSH2_MSG_CHANNEL_DATA未传输。我没有看到这个日志。
大约一年之前 回复
duandian8251
duandian8251 我不认为没有SSH日志就可以提供很多帮助。您可以通过定义('NET_SSH2_LOGGING',2)来获取它们;在顶部然后echo$ssh->getLog();在$ssh->read();之后。另外,如果你将那个长命令放入shell脚本然后调用shell脚本,我确实想知道它是否会对你更好。我的意思是,听起来它应该在没有进入shell脚本的情况下工作但它值得一试!
大约一年之前 回复
douqiao6563
douqiao6563 $SSH->的setTimeout(0);无限期地继续运行。
大约一年之前 回复
dongzhugao9929
dongzhugao9929 尝试使用$ssh->setTimeout(0);
大约一年之前 回复

2个回答

Juddging the source code of the library https://github.com/phpseclib/phpseclib/blob/master/phpseclib/Net/SSH2.php#L4244 we can see, that the waiting time is in-built in the library, so you do not have to set a timeout.

If this doesn't work, you can open an issue on the github, providing your command. IF the library is being supported, you'll get a fix or an answer from the library developers.

展开翻译

译文



判断库的源代码 https://github.com/phpseclib/phpseclib/blob/master/phpseclib/Net/SSH2.php#L4244
我们可以看到 ,等待时间是在库中内置的,因此您不必设置超时。</ p>

如果这不起作用,您可以在github上打开一个问题, 提供您的命令。

正在支持该库,您将从库开发人员处获得修复或答案。</ p>
</ div>

dongwu8050
dongwu8050 phpseclib昨天发布了它确实看起来它仍然受到支持:github.com/phpseclib/phpseclib/releases
大约一年之前 回复

Issue ended up being in the path between server and the device.

展开翻译

译文



问题最终出现在服务器和设备之间的路径中。 </ p>
</ div>

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问