Re: 免费写shell脚本,和发布自己用的脚本!【长期有效!】【2014-11-24更新】
发表于 : 2014-04-29 14:39
你好,最近想学习shell编程,但苦于方法不当进展很慢,这里看楼主编程能力确实很好,请教下学习方法,是找本书照着操作好呢还是怎么好,有什么书可以推荐下吗 

嗯,神奇的穿越daf3707 写了:今天才几号,这脚本超前了?
《高级Bash脚本编程指南》糊涂的小强 写了:你好,最近想学习shell编程,但苦于方法不当进展很慢,这里看楼主编程能力确实很好,请教下学习方法,是找本书照着操作好呢还是怎么好,有什么书可以推荐下吗
怎么网上没有卖这本书的,都是电子档,想买本实体书,看着舒服,楼主哪里买得lxf1992521 写了:《高级Bash脚本编程指南》糊涂的小强 写了:你好,最近想学习shell编程,但苦于方法不当进展很慢,这里看楼主编程能力确实很好,请教下学习方法,是找本书照着操作好呢还是怎么好,有什么书可以推荐下吗
译者 杨春敏 黄毅
ardin 写了:lxf1992521 写了:注意注意: 此脚本有危险操作,不了解其含义的最好不要运行它。ardin 写了:还有这样的好人,不好好麻烦他一下都不好意思。。
帮忙写一个:判断指定网段中还有没有活的机器,如果没有,就关掉自己。
本机装了arping的,最好还要有Log。
......
代码: 全选
#Mins Hours Days Months Day of the week Command
0,30 22,23,0-6 * * * /opt/bin/auto-down.sh
代码: 全选
#!/bin/bash
IPRange=192.168.1.
IPStart=100
IPStop=200
Ethx=enp2s0
IPFile=/tmp/arping.txt
WHOFile=/tmp/who.txt
LogFile=/var/log/auto-down.log
Win1=61
Win2=62
is_anymachine_live ()
{
for (( IP=IPStart; IP<=IPStop; IP+=1 ))
do
arping -I $Ethx -c 3 $IPRange$IP > $IPFile
result=$( grep Received $IPFile | awk '{print $2}' )
if [[ "$result" != 0 ]] ; then
return 1
fi
done
return 0
} # ---------- end of function is_anymachine_live ----------
is_anyone_online ()
{
w>$WHOFile
result=$(awk 'NR==1{print $6}' $WHOFile)
if [[ "$result" != 0 ]] ; then
return 1
fi
return 0
} # ---------- end of function is_anyone_online ----------
haltwin2k3 ()
{
# 关闭网中的windows 2003 服务器。
net rpc shutdown -f -U administrator%passwd -I $IPRange$Win1
net rpc shutdown -f -U administrator%passwd -I $IPRange$Win2
} # ---------- end of function haltwin2k3 ----------
# main
if ( is_anymachine_live ) ; then
if ( is_anyone_online ) ; then
echo "<<< AT `date` >>> " >> $LogFile
echo "<<<>>> Now halt windows 2003 servers $IPRange$Win1, $IPRange$Win2" >> $LogFile
haltwin2k3
rm $IPFile
# 注意:现在要关机!!
echo "<<<>>> Now halt THIS machine" >> $LogFile
/sbin/halt
else
result=$(awk 'NR==1{print $6}' $WHOFile)
echo "<<<<<< at `date`, still has $result user online." >> $LogFile
who >> $LogFile
echo ">>>>>> Don't Panic." >> $LogFile
rm $WHOFile
fi
else
echo "<<<<<< at `date`, still has machine run." >> $LogFile
cat $IPFile >> $LogFile
echo ">>>>>> Don't Panic." >> $LogFile
rm $IPFile
fi