作为一个程序员,怎么能不用一些脚本来做一些神奇的事情呢?最近后台工作很忙,查看日志只能交给我们客户端,不过感觉都是重复性操作,就想着写成一个脚本,遇到了很多问题
一 : 这个脚本的动作是
1 先把本机的用户改为root用户 因为服务器的用户名是root
sudo -i
需要输入密码
2 然后用ssh登陆到服务器
ssh name@domini
然后输入密码
3 然后需要找到对应的位置 tail -f 一下out文件 就可以了
二 : 开始写
1 模拟键盘输入就是输入密码的动作
这个问题百度了一下要安装expect 具体方法就不写了网上一大堆
装好了之后
#!/usr/bin/expect
spawn sudo -i
expect "Password:"
send "你的密码\n" #此处的\n为模拟键盘的enter键
spawn ssh name@domini "tail -f 日志路径"
#ssh name@domini "命令" 此方式是登陆并且执行服务器命令
expect "*password:"
send "你的密码\n"
interact
作为一个程序员应该考虑多一点,比如加一个口令啦,加一个提醒了本以为只是加一个sh的if就可以了,可是怎么在shell里调用expect呢?
2 shell里调用expect
#!/bin/sh
read -p "is lookLog?yes|no:" result
if [ "$result" == "yes" ] #注意这里的写法,[]里两边一定要留空格,不然sh识别不出来
then
echo 'hha'
/usr/bin/expect<<EOF #此方式是在sh中执行expect命令
spawn sudo -i
expect "Password:"
send "密码\n"
spawn ssh username@host"tail -f 日志路径"
expect "*password:"
send "密码\n"
set timeout -1 #注意代表一直等待下去,如果不设置就会用默认值10s之后expec就会继续执行下去就进程完成了
expect eof #注意原来的interact(互动)要改为 expecteof
EOF
else
echo 'hehe'
fi
在此说一下timeout,我认为是一个全局的变量,代表等待多长时间就继续执行,因为没有写interact ,而日志要一直监控,所以timeout设置为-1就是一直等待下去
后语:这样你就可以赋执行权限,然后放在桌面,需要的时候只要点击就可以了。
网友评论