Chinaunix首页 | 论坛 | 博客
  • 博客访问: 10173740
  • 博文数量: 1669
  • 博客积分: 16831
  • 博客等级: 上将
  • 技术积分: 12594
  • 用 户 组: 普通用户
  • 注册时间: 2011-02-25 07:23
个人简介

柔中带刚,刚中带柔,淫荡中富含柔和,刚猛中荡漾风骚,无坚不摧,无孔不入!

文章分类

全部博文(1669)

文章存档

2023年(4)

2022年(1)

2021年(10)

2020年(24)

2019年(4)

2018年(19)

2017年(66)

2016年(60)

2015年(49)

2014年(201)

2013年(221)

2012年(638)

2011年(372)

分类:

2012-10-19 18:46:11

使用expect登录自动远程服务器和执行重复任务  

2012-10-09 12:21:44|  分类: shell编程 |  标签: |字号 

1.使用expect登录跳板机
Java代码  收藏代码
  1. #!/usr/bin/expect -f  
  2.   
  3. set TERMSERV ***  
  4. set USER ***  
  5. set PASSWORD ***  
  6.   
  7. # Start the session  
  8. catch {spawn ssh -l $USER $TERMSERV}  
  9.   
  10. # Login  
  11. expect "*assword:*" { send "$PASSWORD\r" }  
  12. expect "*server:*" { send "1\r" }  
  13. expect "*bash*3.2*" { send "cd /tmp\r"; interact }  #把控制权交给用户  
  14.   
  15. #通过跳板机登录线上机器  
  16. expect "*bash*3.2*" { send "ssh -l nobody ***\r" }  
  17. expect "*assword:*" { send "***\r" }  
  18. expect "*bash*3.2*" { send "cd /home/admin\r"; interact }  

 

 

2.登录远程服务器并执行特定的任务

 

Java代码  收藏代码
  1. #!/usr/bin/expect -f  
  2.   
  3. set USER nobody  
  4. set PASSWD viewlog  
  5. set SERVER_HOST [lindex $argv 0]  
  6. set REGEXP [lindex $argv 1]  
  7. set LOG_FILE [lindex $argv 2]  
  8. set TMP_FILE_NAME [lindex $argv 3]  
  9.   
  10. catch {spawn ssh -l $USER $SERVER_HOST}  
  11. expect {  
  12. "*yes/no*" { send "yes\r" }  
  13. "*assword:*" { send "$PASSWD\r" }  
  14. }  
  15. expect "*nobody*" { send "egrep '$REGEXP' $LOG_FILE > /tmp/$TMP_FILE_NAME\r" }  
  16. expect "*nobody*" { send "exit\r" }  
  17.   
  18. catch {spawn scp $USER@$SERVER_HOST:/tmp/$TMP_FILE_NAME $TMP_FILE_NAME}  
  19. expect "*assword:*" { send "$PASSWD\r" }  
  20. expect "*wuzhong*" { send_user "ok!!!" }  

 

 

3.在多台服务器上执行相同的任务
Java代码  收藏代码
  1. #!/bin/bash  
  2.   
  3. #set -x  
  4.   
  5. servers=(  
  6. 10.232.11.93  
  7. 10.232.10.79  
  8. )  
  9.   
  10. tmp=tmp_wz  
  11. i=0  
  12. for server in ${servers[*]}  
  13. do  
  14. i=$(($i+1))  
  15. ./grepandscp.tcl $server "^ERROR" "/home/admin/wtm/logs/wtm.log" "${tmp}$i"  
  16. done  
  17. echo "task is over!"  
阅读(691) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~