我与1200台服务器的悲伤故事(sshpass的使用)

前言:
 今天正在打农药,我的妲己正在草丛里拿五杀的时候,好嘛,突然接到一个电话,顿时不好的预感来了,一看领导打来的,说 "安全团队扫到了弱口令,发现了系统漏洞,这个事情很着急",最后我总结了一下就是让我去加班给系统做安全加固。那就用sshpass先改个密码吧,之后再用ansible批量加固。(可能你们好奇为啥不用ansible一并改密码,因为我这的环境实在是太特殊了,牵涉到院里环境,不再多说),,,然而研究了一下sshpass发现因为各种原因没办法使用,然后。。。。没错。就是一台一台改的,4个人8小时,,,不过发现sshpass在做一些简单操作的时候确实很方便所以记录下

一、sshpass服务的安装

centos系统自带的CentOS-Base.repo源就有yum install sshpass -y 安装即可

我与1200台服务器的悲伤故事(sshpass的使用)

二、sshpass服务的使用

    sshpass支持在命令行中使用密码,可以结合脚本来实现一些功能
    注意:不建议在生产环境使用(明文密码不安全),一般用于新购服务器初始化一些环境

sshpass采用密码远程

sshpass  -p 'redhat' ssh -o "StrictHostKeyChecking=no" 10.85.1.1 'ifconfig'
#参数注释:-o "StrictHostKeyChecking=no" 假如一台主机是第一次连接会让你确认是否连接,这个参数代表不询问,直接连接,如果不添加,会造成命令执行失败
#注:如果不是22端口那么添加"-p 你的端口" 即可

sshpass从环境变量读取密码

export SSHPASS=redhat     #设置环境变量,临时生效,如果想要一直使用,需要将此参数添加到/root/.bash_profile下
sshpass -e ssh 172.16.133.86 'ifconfig'     #-e 代表使用环境变量作为密码

sshpass采用从文件读取密码方式连接

sshpass -f passwd  ssh -o "StrictHostKeyChecking=no" 172.16.133.86 'ifconfig'
#参数注释:-f 指定从文件读取密码。passwd是我的密码文件名

工作中的一个实例脚本,在sysctl.conf文件中添加一行参数

#!/bin/bash
for i in $(cat ip.txt);do
        /usr/bin/sshpass  -f /root/passwd ssh -o "StrictHostKeyChecking=no -p 7791 $i  /bin/echo "net.ipv4.tcp_sack = 0" >>/etc/sysctl.conf
        /sbin/sysctl -p
done

猜你喜欢

转载自blog.51cto.com/12020040/2424744