👋 欢迎来到吴老二技术博客,专注运维 / 数据库 / 云原生
首页/运维服务/正文

linux系统玩转sshpass

吴
吴老二
2021-07-29运维服务3501 次浏览0 条评论
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比较好。
文章底部广告位在后台「广告设置」填写广告代码后显示

评论 0

评论需 登录 后发表(注册并验证邮箱)。
还没有评论,来抢沙发~