[英]Shell Script for checking processes
我们的环境中大约有300台服务器(AIX,HP-UX,Suse Linux,RHEL,Solaris),这使得很难分别检查这些服务器中是否正在运行名为syslog的进程。
因此,我正在开发一个Shell脚本,该脚本应以root身份从Linux开放客户端Lenovo Thinkpad SSH并执行ps -ef
命令并在文本文件中返回输出。
for i in `cat /tmp/serverlist |awk '{ print $1 }'`
do
ssh -l root $i `bash -x ./sysloginfo.sh` >>syslogdata.txt
done
脚本文件sysloginfo.sh包含以下内容:
for i in `ps -ef |grep -i syslog |grep -v pts |grep -v super |awk '{ print $9 }'`
do
echo "`uname -n`" $i "\n"
done
现在,当我执行命令时,它对所有服务器一一显示以下内容,并返回我的Linux Laptop Terminal的$提示符。
bash: xxxxxx.xxxx.com: command not found
++ ps -ef
++ grep -i syslog
++ grep -v pts
++ grep -v super
++ awk '{ print $9 }'
+ for i in '`ps -ef |grep -i syslog |grep -v pts |grep -v super |awk '\''{ print $9 }'\''`'
++ uname -n
+ echo oc7057073017.ibm.com -i '\n'
+ for i in '`ps -ef |grep -i syslog |grep -v pts |grep -v super |awk '\''{ print $9 }'\''`'
++ uname -n
+ echo xxxxxx.xxxx.com: --start '\n'
为什么所有这些呢?
如果您安装了snmp,请使用SNMP来查询所有远程主机,而无需任何SSH,我将尽力为您指出正确的方向:
snmpwalk -v2c -c public localhost 1.3.6.1.2|grep -i syslog
HOST-RESOURCES-MIB::hrSWRunName.1171 = STRING: "rsyslogd"
HOST-RESOURCES-MIB::hrSWRunPath.1171 = STRING: "/sbin/rsyslogd"
HOST-RESOURCES-MIB::hrSWRunParameters.1171 = STRING: "-i /var/run/syslogd.pid -c 5"
HOST-RESOURCES-MIB::hrSWRunParameters.15145 = STRING: "-i syslog"
HOST-RESOURCES-MIB::hrSWInstalledName.392 = STRING: "rsyslog-5.8.10-6.el6"
这些都是与此计算机上的snmp相关的内容
现在运行这组特定的snmpwalk命令,我可以将pid指向此本地计算机,但是将localhost更改为远程主机,只要密码是公用的并且允许从我的主机进行snmp连接,那么这应该可以工作
snmpwalk -v2c -c public -Oq localhost HOST-RESOURCES-MIB::hrSWRunName|grep syslog
HOST-RESOURCES-MIB::hrSWRunName.1171 "rsyslogd"
snmpwalk -v2c -c public -Oq localhost HOST-RESOURCES-MIB::hrSWRunName|grep syslog|awk -F"hrSWRunName." '{print $2}'|awk -F" " '{print $1}'
1171
的pid是1171
ps auwx|grep 1171
root 1171 0.0 0.0 249276 1820 ? Sl Nov20 0:03 /sbin/rsyslogd -i /var/run/syslogd.pid -c 5
最后,找到了一种在文本文件中提取过程的方法。 请参考下面的代码。
for i in `cat /tmp/serverlist`
do
echo $i:`ssh -l root $i "uname -n;ps -eo comm | grep -i syslog"` >> sysloginfo.txt
done
给出的输出为
xx.xx.xx.xx: xxxxxxx101 syslogd
xx.xx.xx.xx: xxxxxxx102 syslog-ng
xx.xx.xx.xx: xxxxxxx103
xx.xx.xx.xx: xxxxxxx104 syslog-ng syslog-ng
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.