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比较好。
您可以选择一种方式赞助本站
支付宝扫一扫赞助
微信钱包扫描赞助
赏