SSH批量管理 expect自动交互
Posted Elvin笔记分享
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SSH批量管理 expect自动交互相关的知识,希望对你有一定的参考价值。
SSH批量管理
expect自动交互
原创博文http://www.cnblogs.com/elvi/p/7662908.html
# SSH批量管理 # expect自动交互 ############################# #!/bin/sh # 初次使用,以root批量执行 CMD=( date uname -r hostname ) sh ${[*]} . /etc/init.d/functions [[ -f /usr/bin/expect ]] || { echo "install expect";yum install expect -y; } #若没expect则安装 ########## ############################# # #SSH批量执行shell命令 #!/bin/sh . /etc/init.d/functions [[ $# == 0 ]] && { echo \'ege: /bin/sh \'$0\' "命令1;命令2"\';exit; } for n in 81 82 83 do echo ssh -p22 192.168.20.$n $* [[ $? == 0 ]] && action "========IP:192.168.20.$n========" /bin/true || action "========IP:192.168.20.$n========" /bin/false done ########## ############################# ###批量推送文件 #!/bin/sh . /etc/init.d/functions [[ $# == 0 ]] && { echo \'ege: /bin/sh \'$0\' "本地文件" "(远程)目录"\';exit; } for n in 81 82 83 do scp -P22 $1 sshync@192.168.20.$n ~/ >/dev/null 2>&1 &&\\ ssh -p22 -t sshync@192.168.20.$n sudo rsync ~/$1 $2 >/dev/null 2>&1 [[ $? == 0 ]] && action "========IP:192.168.20.$n" /bin/true || action "========IP:192.168.20.$n" /bin/false done ########## ############################# #!/bin/sh # 批量分发SSHKEY . /etc/init.d/functions [[ -f /usr/bin/expect ]] || { echo "install expect";yum install expect -y; } #若没expect则安装 PUB=/`whoami`/.ssh/id_dsa.pub [[ -f $PUB ]] || { ssh-keygen -t dsa -P \'\' -f /`whoami`/.ssh/id_dsa>/dev/null 2>&1; } #若没公钥则生成 USER=sshync PASS=sshync # IP : SIP + SIP_end SIP=192.168.20. SIP_end=(41 47 43) #expect自动交互 function EXP() { /usr/bin/expect << EOF set timeout 1 spawn ssh-copy-id -i $PUB "-p22 $USER@$SIP$n" expect { "yes/no" { send "yes\\r";exp_continue } "password:" { send "$PASS\\n";exp_continue } eof { exit } } EOF } # [[ $1 == y ]] || { echo -e \'ege: /bin/sh \'$0\' y \\n 当前\'`whoami`\'用户向远程用户\'$USER\'分发SSHKEY \\n 远程主机列表\'$SIP\'\'${SIP_end[*]}\' \\n\';exit; } for n in ${SIP_end[*]} do EXP |grep \'.ssh/authorized_keys\'>/dev/null 2>&1 [[ $? == 0 ]] && action "========IP:192.168.20.$n" /bin/true || action "========IP:192.168.20.$n" /bin/false done ############################# #!/bin/sh #Made by elven,2017 # MariaDB初始化,设置密码 DBPass=db2017 [[ -f /usr/bin/expect ]] || { echo "install expect";yum install expect -y; } #若没expect则安装 /usr/bin/expect << EOF set timeout 30 spawn mysql_secure_installation expect { "enter for none" { send "\\r"; exp_continue} "Y/n" { send "Y\\r" ; exp_continue} "password:" { send "$DBPass\\r"; exp_continue} "new password:" { send "$DBPass\\r"; exp_continue} "Y/n" { send "Y\\r" ; exp_continue} eof { exit } } EOF #测试 mysql -u root -p$DBPass -e "show databases;" #############################
以上是关于SSH批量管理 expect自动交互的主要内容,如果未能解决你的问题,请参考以下文章
推送文件(expect交互式方式与sshpass非交互式方式)