我正在运行以下命令,该命令在我们的Linux服务器上运行良好:
ssh -n user@192.168.1.1 "echo start; hostname;" > results.tmp
但是,我一直在尝试在基于Unix的盒子上运行类似的命令(我相信)并且启用了SSH。
因此,SSH进入此服务器并运行命令有效:
ssh admin@192.168.2.2
SHOW NFS STATUS
结果:
NFS Server: Status: Last Error: IP Address: Mount Path:
Primary active NONE
现在,我尝试像这样运行命令(转储到要解析的文本文件中):
ssh -n admin@192.168.2.2 "SHOW NFS STATUS" > results.tmp
...我输入密码,收到此消息,但没有任何结果:
Received disconnect from 192.168.2.2: 11: Logged out.
我尝试删除/添加“-n”和括号以及分号,并且无法使其像其他Linux服务器一样运行。 任何想法都表示赞赏!感谢
当我运行此命令时,还有一个想法:
ssh -n admin@192.168.2.2 -p 22
我得到了这些结果:
Pseudo-terminal will not be allocated because stdin is not a terminal.
答案 0 :(得分:0)
我能够使用expect脚本来解决这个问题。感谢所有帮助过的人。
#!/bin/bash
expect -c "
spawn ssh -oStrictHostKeyChecking=no -oCheckHostIP=no admin@192.168.2.2
#Password prompt
expect -exact \"password:\"
#Send password
send \"s3cr3tp@ssword\r\"
sleep 1
expect -exact \"> \"
send \"SHOW NFS SHELF 1 SLOT 1 STATUS\r\"
#drop us back to a prompt
expect -exact \"> \"
#Exit
\"exit\"
"