shell脚本ping和telnet
#!/bin/sh serverPT() { ping=`ping -c 1 $1` if [ "X'${ping} | grep "alive"'" != "X" ];then echo ping $1 ok telnet=`telnet $1 $2` if [ "X'${telnet}|grep "Connected"'" != "X" ];then echo telnet $1 $2 ok else echo 自动检测:telnet $1 $2 failed >> /20120208/check.txt else echo 自动检测:ping $1 failed >> /20120208/check.txt /CheckMail/CSMrun.sh fi done } serverip1 = "125.76.000.169" serverport1 = "8080" serverPT $serverip1 $serverport1
就是现在系统是ping通就返回XXX.XX.XX.XXX is alive 否则就什么也没有 telnet通就显示 connected XXX.XXX.XXX 否则只显示一个try xxx.xxx.xxx 我不怎么熟悉shell 可能语法 标点都都错了 望指出
有朋友告诉我说shell不支持telnet 会陷进去
如果telnet通了 显示就是
bash-2.05# 123.sh Trying 125.00.000.169... Connected to 125.00.000.169. Escape character is '^]'. Connection to 125.00.000.169 closed by foreign host.
不通就是
try 126.00.000.168
找不到断开。。。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
#!/bin/bash
serverPT()
{
ping=`ping -c 1 $1`
if [ "X'${ping} | grep "alive"'" != "X" ];then
echo ping $1 ok
telnet=`(sleep 1;)|telnet $1 $2`
if [ "X'${telnet}|grep "Connected"'" != "X" ];then
echo telnet $1 $2 ok
else
echo 自动检测:telnet $1 $2 failed >> /20120208/check.txt
fi
else
echo 自动检测:ping $1 failed >> /20120208/check.txt
fi
}
serverip1="192.168.15.188"
serverport1="80"
serverPT $serverip1 $serverport1
#!/bin/bash
serverPT()
{
ping=`ping -c 1 $1`
if [ "X'${ping} | grep "alive"'" != "X" ];then
echo ping $1 ok
telnet=`(sleep 1;)|telnet $1 $2`
if [ "X'${telnet}|grep "Connected"'" != "X" ];then
echo telnet $1 $2 ok
else
echo 自动检测:telnet $1 $2 failed >> /20120208/check.txt
fi
else
echo 自动检测:ping $1 failed >> /20120208/check.txt
fi
}
serverip1="192.168.15.188"
serverport1="80"
serverPT $serverip1 $serverport1
我写过类似的脚本,就试试多方货没活着。。
shell里面有个$?的变量,用于返回上一个命令的结果。
ping -c 1 xxx.xxx.xxx.xxx
如果成功,$?=0,否则为其他值,没必要单独赋值。
telnet的结果不能够赋值给变量,因为这个命令在没有断开连接前,根本不会返回。
shell确实不能直接在后台跑telnet,估计他会检查输入是不是一个tty,如果不是就退出了。
当然了,可以欺骗telnet认为输入是一个tty。比如,tee这个命令。
自动ping telnet 然后不通就反馈信息
做这个的目的在哪里……