shell脚本,利用for循环轮训IP

shell脚本,利用for循环轮训IP

当有N台服务器,需要互相登录或者scp(sftp)、ssh 一些操作,可以利用for循环对ip文件,进行逐行ip操作。

注:后期完善问题!如果需要文件路径变量或者是脚本路径变量,可直接到.bash_profile中,利用if判断对文件为位置或其他变量进行变更!!!

下面以秘钥进行轮训操作:

ssh-copy-id

流程:

  • 生产秘钥对
  • 脚本推送公钥

第一步,生成秘钥对

百度,或者我前面的文章

ssh-keygen -t rsa

第二步,IP地址文件:ip.txt

注:担心密码泄露可以使用gpg进行加密!!!脚本自行解密,执行完脚本再执行删除操作!!!(gpg加密特性,加密用户可直接解密,其他用户解密需输入密码

#演示文件
#IP地址         用户名     密码
192.168.68.137  root      123456789
192.168.1.102   test2     123456
192.168.1.103   test3     123456
#192.168.1.104  test4     123456

第三步,脚本

注:传送秘钥依然要输入密码,文本添加密码是方便你复制粘贴

注:脚本会自动过滤ip.txt中#开头的行,如果不想传输某个ip可以#直接注释!

#!/bin/bash
read -p "输入IP文件路径:" IPFILE
LOGPATH=~/rsa.log
echo "$IPFILE"
#统计ip.txt行数
IPSUM=`cat $IPFILE| wc -l`
IPSUM1=`cat $IPFILE|grep -v "^#"|wc -l`
echo "共计IP个数为:$IPSUM1 "
LINE=@
for i in `seq  $IPSUM`
do
sed -n "$i"p $IPFILE |grep "^#" >/dev/null
if [ ! $? -eq 0 ];then
IPADD=`sed -n ${i}p $IPFILE |awk '{print $1}'`
IPUSER=`sed -n ${i}p $IPFILE |awk '{print $2}'`
IPPWD=`sed -n ${i}p $IPFILE |awk '{print $3}'`

echo -e "\e[33m 主机地址:$IPADD     主机用户名:$IPUSER      主机密码:$IPPWD \e[0m"
#查看主机是否存活
ping -c 1 $IPADD > /dev/null 2>&1
  if [ $? -eq 0  ];then
#存活传送秘钥
  ssh-copy-id -i /root/.ssh/id_rsa.pub $IPUSER$LINE$IPADD
        if [ $? -eq 0 ];then
        echo "秘钥传送成功!"
        echo "!!!秘钥传送成功:$IPADD" >> $LOGPATH
        else
        echo "秘钥传送失败!"
        echo "秘钥传送失败:$IPADD" >> $LOGPATH
        fi
  else
  echo "主机未存活:$IPADD"
  echo "主机未存活:$IPADD"  >> $LOGPATH
  fi
echo "------------------------------------------------------------------------------------"
fi
let i++
done
echo -e "\e[33m 日志路径:$LOGPATH \e[0m"

图例有错误,后面的“主机用户”实际是“主机密码”,懒得截图了。

https://qnimg.ffing.cn/wp-content/uploads/2022/01/image-6.png?imageView2/0/q/75|watermark/1/image/aHR0cHM6Ly9xbmltZy5mZmluZy5jbi9mbl9sb2dvLnBuZw==/dissolve/55/gravity/SouthEast/dx/0/dy/0

good good study, day day up!

发表评论

textsms
account_circle
email

shell脚本,利用for循环轮训IP
当有N台服务器,需要互相登录或者scp(sftp)、ssh 一些操作,可以利用for循环对ip文件,进行逐行ip操作。 注:后期完善问题!如果需要文件路径变量或者是脚本路径变量,可直接到.bash_…
扫描二维码继续阅读
2022-01-04