首页 > 代码库 > Linux shell (ssh批量配置免秘)读取配置文件,进行远程操作
Linux shell (ssh批量配置免秘)读取配置文件,进行远程操作
需要目标机器安装有 expect 命令
分成五个文件config.ini(配置文件)、id_ras.pub(公钥)、read.sh(一个函数,用于读取配置文件)、test.sh(执行文件)、run.sh(远程运行脚本) 是一个配置文件.
步骤1:读取配置文件 ip,user,pwd
步骤2:将id_rsa.pub、run.sh scp到远程机器上
步骤3:远程运行脚本
read.sh
#!/bin/bashGetKey(){ section=$(echo $1 |cut -d ‘.‘ -f 1) key=$(echo $1 |cut -d ‘.‘ -f 2) if [ "$section"x = "ip"x ];then nub=`cat config.ini | grep -n "$key={" |awk -F ":" ‘{print $1}‘` nue=`cat config.ini | grep -n "}" |awk -F ":" ‘{print $1}‘` nub=`expr $nub +1` for i in $nue do if [ $i -gt $nub ]; then a=$i break fi done nue=`expr $a -1` sed -n "$nub,$nue p" config |sed s/,//g else sed -n "/\[$section\]/,/\[.*\]/{ /^\[.*\]/d /^[ \t]*$/d /^$/d /^#.*$/d s/^[ \t]*$key[ \t]*=[ \t]*\(.*\)[ \t]*/\1/p }" config.ini }
run.sh
#!/bin/bashCreate(){ /usr/bin/expect -c" set timeout 30 spawn ssh-keygen -t rsa expect \":\" send \"\r\" expect \":\" send \"\r\" expect \":\" send \"\r\" expect eof exit "}if [ ! -d .ssh ];then Create if [ $? != 0 ];then echo "step for create failed" exit 0 else cat id_rsa.pub >> .ssh/authorized_keys if [ $? != 0 ];then echo "step for cp failed" exit 0 fi fielse cat id_rsa.pub >> .ssh/authorized_keys if [ $? != 0 ];then echo "step for cp failed" exit 0 fifi
test.sh
#!/bin/bash. ./read.ship=$(GetKey "ip.ip")passwd=$(GetKey "pass.passwd")user=$(GetKey "user.usr")for i in $ipdo/usr/bin/expect -c"set timeout10spawn /usr/bin/scp -r run.sh $user@$iexpect \"password:\" {send \"$passwd\r\"}spawn /usr/bin/scp -r id_rsa.pub $user@$iexpect \"password:\" {send \"$passwd\r\"}expect eofexit"/usr/bin/expect << EOFset timeout 10spawn ssh user@$iexpect "password:"send "$passwd\r"expect "]"send "sh run.sh\r"send "exit\r"expect eofEOFdone
配置文件
[ip]ip={12.23.31.114,21.34.54.112}[user]usr=hehehe[pass]passwd=wohehehda
Linux shell (ssh批量配置免秘)读取配置文件,进行远程操作
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。