[心缘地方]同学录
首页 | 功能说明 | 站长通知 | 最近更新 | 编码查看转换 | 代码下载 | 常见问题及讨论 | 《深入解析ASP核心技术》 | 王小鸭自动发工资条VBA版
登录系统:用户名: 密码: 如果要讨论问题,请先注册。

[备忘]linux下,expect+ssh,自动更新多个服务器

上一篇:[转帖]vim怎样在被显示为多行的单行里象真正的多行移动
下一篇:[备忘]nginx反向代理,https到upstream上

添加日期:2018/5/6 16:21:39 快速返回   返回列表 阅读1756次
(1)执行脚本的机器:
yum install expect

(2)写个autoSSH.exp文件,内容:


#!/usr/bin/expect

set channel [lindex $argv 0];
set passwd "123456";

spawn ssh "root@$channel";
set timeout 300;

expect {
 "*assword:*" {
  send "$passwd\r";
 }

 "*es/no)?*" {
        send "yes\r"  ;
        exp_continue  ;
    }

eof {
 send_user "connection to host failed: $expect_out(buffer)"
 exit
}
};

expect root@*   {send "./xxx.sh \r" }  ;
expect root@*  { send "exit\r" } ;
expect 100%


注意第一行的:#!/usr/bin/expect,要有
root是用户名,123456是密码,看着改吧
我是登录后执行了一个xxx.sh,就退出了

(3)
写个sh文件:


ip_array=("172.26.0.1" "172.26.0.2" "172.26.0.3")
for ipOne in ${ip_array[*]}
do
        echo '-------------'
        echo ${ipOne}
        echo '-------------'
        ./autoSSH.exp ${ipOne}

done


执行这个sh文件即可。
================================================
如果登录到别的服务器,不想退出那个服务器的话,
就写一行:interact
就行了。命令行就留在那个服务器上了。
 

评论 COMMENTS
没有评论 No Comments.

添加评论 Add new comment.
昵称 Name:
评论内容 Comment:
验证码(不区分大小写)
Validation Code:
(not case sensitive)
看不清?点这里换一张!(Change it here!)
 
评论由管理员查看后才能显示。the comment will be showed after it is checked by admin.
CopyRight © 心缘地方 2005-2999. All Rights Reserved