linux系统玩转sshpass

avatar 2021年7月29日19:04:33 评论 2,009 次浏览

sshpass是一个很不错的交互工具,对曾经使用的expect相比,个人感觉好了很多,可能是针对环境不一样吧。我是想针对批量用户增加密钥,如果使用expect也可以但是在针对sshpass来说相对更简单了。不过在说sshpass之前我们先看一下sshpass的安装方法:

[wolf@wulaoer.org 🔥🔥🔥🔥 ]$ apt-get  install sshpass
[wolf@wulaoer.org 🔥🔥🔥🔥 ]$ yum -y install sshpass
[wolf@wulaoer.org 🔥🔥🔥🔥 ]$ wget http://sourceforge.net/projects/sshpass/files/sshpass/1.05/sshpass-1.05.tar.gz 
[wolf@wulaoer.org 🔥🔥🔥🔥 ]$ tar xvzf sshpass-1.05.tar.gz 
[wolf@wulaoer.org 🔥🔥🔥🔥 ]$ cd sshpass-1.05.tar.gz 
[wolf@wulaoer.org 🔥🔥🔥🔥 ]$ ./configure 
[wolf@wulaoer.org 🔥🔥🔥🔥 ]$ make 
[wolf@wulaoer.org 🔥🔥🔥🔥 ]$ make install

使用sshpass批量传密钥,注意,在语句后面的StrictHostKeyChecking=no,如果不加就会对没有修改ssh参数的机器,需要输入yes。增加后,就不会有yes这个参数了。这个在expect里是没有的,需要对yes做一个判断,如果没有默认,如果有就乖乖的输入。

sshpass -p $PASSWD ssh-copy-id -i /root/.ssh/id_rsa.pub root@$ip -o StrictHostKeyChecking=no

批量传输文件给对方机器,这里使用的命令scp命令,利用scp命令,可以批量把本地的文件传到目标机器上,看语法

sshpass -p $PASSWD scp file root@$ip -o StrictHostKeyChecking=no

当然,也可以把目标机器中指定的文件copy到本地,只是换个位置而已,这里就不多说了。

不过看到有人写的使用sshpass做远程执行命令,我在本地试了一下执行命令都不行,提示“sshpass: Failed to run command: No such file or directory”不过也不要紧了 ,如果远程批量执行的话还是使用ansible比较好。

avatar

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: