SSH交互式通信总结:expect、plink、putty、ss
关于在linux脚本中远程执行命令的问题,笔者在以前文章中可以使用expect工具来完成交互式通信。在windows平台下可以使用plink或者putty工具。免密也可以设置SSH秘钥,参考文章-Linux怎么远程执行指令呢-SSH秘钥。但是在linux下需要一一对应设置,未免过于麻烦。今天看到一款使用sshpass来完成交互式通信的方法,于是笔者以前用过的工具一一展示一下,做个总结,方便以后使用。
1、linux下expect。参考文章-Linux中expect工具完成远程交互通信。
expect用于发送指定的字符串信息,获取匹配信息匹配成功则执行expect后面的程序动作,文章里面有详细的脚本说明。
2、windows下plink。参考文章--LabVIEW通过PLINK远程到Linux系统。
windows10执支持ssh,但是不支持sshpass吗,于是使用plink来代替。
先看指令:PLINK -pw raspberry pi@192.168.31.82 -ssh -batch "pwd"。
-pw指定密码,-batch禁止交互式运行命令。
3、windows下putty。
PUTTY -pw raspberry pi@192.168.31.103
不用输入密码来完成交互式,这个这对于putty自带可视化界面需求的,不需要使用putty的界面的话就可以选择上面的plink命令行。
4、linux下sshpass
先看指令:sshpass -p raspberry ssh pi@192.168.31.103 pwd,sshpass用于非交互的ssh 密码验证,允许你用 -p 参数指定明文密码,直接登录远程服务器执行指令。
在ubuntu下安装:sudo apt install sshpass
在RHEL下安装:sudo yum install sshpass
5、 LabVIEW下ALAB SSH工具
lab -SSH实现了Secure Shell (SSH),SSH客户端应用程序(运行LabVIEW的PC)与SSH服务器连接起来。但是这个工具是要收费的,可以使用plink来代替。但是相比于plink,ALAB SSH可以在连接后完成一系列的命令,而LabVIEW 函数System Exec VI调用plink连接完成后只能执行一次。如果要执行多次的话只能在plink后面的命令里面入手,使用;或者&&来完成多个指令或者做成脚本。比如:
PLINK -pw raspberry pi@192.168.31.82 -ssh -batch "pwd;whoami"