title: 'sshpass的安装及使用'
date: 2019-11-23 12:33:45
tags: [sshpass,centos,tools,linux,install]
published: true
hideInList: false
feature:
目前工作需要大量进行批处理,在内网,简单的批量处理使用以及安装sshpass较为简单,在时间紧急的情况下也是一种很好的解决方案。
前提是每台机器的密码需要一致,而且都有ssh服务。
sshpass的安装由于是内网,需要有sshpass的离线安装包;
获得离线安装包的方式可以参考我的上一篇文章。
所使用的环境是centos7,下载离线安装包
yum install --downloadonly --downloaddir /tmp/sshpass/ epel-release
yum install --downloadonly --downloaddir /tmp/sshpass/ sshpass
将rpm包导入内网机器中,安装sshpass;
完成后,通过这台机器批量处理处理,包括它自身;
我的设计思路是把所有的批量机器的ip保存在ip.txt文件中如:
[root@wdll ~]# cat ip.txt
192.168.1.101
192.168.1.102
192.168.1.100
装了sshpass的机器ip为192.168.1.100,放到末尾。
这些机器的密码都为 123456,使用以下脚本进行预处理
[root@wdll ~]# cat ssh.sh
#!/bin/bash
for li in `cat ip.txt`;
do
echo "connecting to $li ......"
sshpass -p 123456 ssh root@$li "sed -i '/UseDNS/d' /etc/ssh/sshd_config && echo 'UseDNS no' >>/etc/ssh/sshd_config && service sshd restart"
echo "closed"
done
处理结束后,修改装了sshpass的机器的配置文件
sed -i '/StrictHostKeyChecking/d' /etc/ssh/ssh_config;\
echo 'StrictHostKeyChecking no' >> /etc/ssh/ssh_config;\
sed -i '/GSSAPIAuthentication/d' /etc/ssh/ssh_config;\
echo 'GSSAPIAuthentication no' >> /etc/ssh/ssh_config;\
service sshd restart
之后可以进行批量处理操作了;
传输
sshpass -p 123456 scp ${src_dir} root@${tar_ip}:${tar_dir}
执行命令
sshpass -p 123456 ssh root@${tar_ip} "${command}"
网友评论