`
zhoujm
  • 浏览: 11158 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

抓取日志自动输入密码脚本

阅读更多

线上的服务器大多是Linux的,Java程序在写日志后,我们要拿到一个群集机器的日志。一般来说要登录每台机器去拿,可以写程序去做,但远没有脚本方法,但脚本会存在一个问题,就是要求每次scp的时候输入密码。下面用expect解决这个问题。可以抓取一个集群机器的日志,不用再输入密码。

 

 

#!/usr/bin/expect -f

if { $argc !=1 &&  $argc !=2  } {

       send_user "没有输入远程日志文件名.\n"

       send_user "格式是:get.sh ${remote_log} ${local_log}\n"

       send_user "例如:\n"

       send_user "./get.sh /home/admin/log/gc.log /tmp/gc.log\n"

       send_user "local_log没有输入,默认是值:/logs/log.txt\n"

       exit

}

set log_path [lindex $argv 0]

if { $argc == 2 } {

    set local_logpath [lindex $argv 1]

} else {

    set local_logpath "./logs/log.txt"

       send_user "local_log没有输入,默认是本地日志路径 :$local_logpath \n"

}

set file "./ip.txt"

if {[file isfile $file]!=1} {

           send_user "Ip 文件不存在,请检查.\n"

           exit

}

send_user "\n\n\n"

set f [open $file r]

set count 0

while {[gets $f line]>=0} {

       set ips($count) $line

       #puts "line $count of file: $ips($count)"

       incr count

}

close $f

set i 0

while {$i<50} {

       #puts $ips($i)

       spawn scp nobody@$ips($i):$log_path  $local_logpath.$ips($i)   

       expect "nobody@$ips($i)'s password: " {send "look\r"}

       expect eof

       incr i

}

exit

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics