注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

青新的博客

记录工作点滴 分享学习快乐 享受家庭温馨

 
 
 

日志

 
 

脚本被cron调用执行时需注意事项  

2007-08-03 13:46:20|  分类: Linux学习 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

今编写一脚本,内容如下,具体功能略过不提,此脚本可在命令行下执行,并可达到预期效果,但只要将其置入cron中,到达我所设置的时间点时,脚本可以执行,但是与iptables相关的语句脚本并没有执行,后来加上以下红色字部分后,脚本可在cron中被正常执行,原因分晰:cron执行此脚本时,重新开启一个shell,系统变量PATH由/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin变为/usr/bin:/bin,故无法定位并执行iptables命令.所以提醒各位在编写shell脚本时,脚本中的命令尽量使用绝对路径,以避免出现脚本无法定位并执行命令的结果.

#!/bin/sh
#start define var
internetcontrolmacfile=/root/firewall/internetcontrol.mac
MAC=00:13:20:E6:DF:20
#end define var
#建立squid相关配置更新函数
function updatesquid(){
         cat $internetcontrolmacfile |grep yes |awk {'print $5'}>/etc/squid/normal_mac
         /usr/local/squid/sbin/squid -k reconfigure
}

#建立iptables相关配置更新函数
function operate_iptables(){
         /sbin/iptables -t filter -$1 FORWARD    -p all             -m mac --mac-source $2 -j ACCEPT &>/dev/null
         /sbin/iptables -t nat  -$1 PREROUTING -i eth1 -p tcp --dport 80  -m mac --mac-source $2 -j REDIRECT --to 3128 &>/dev/null
}

case "$1" in
          add)
              operate_iptables A  $MAC
              sed -i "/$MAC/ s/no/yes/" $internetcontrolmacfile
              updatesquid
          ;;
          del)
              operate_iptables D $MAC
              sed -i "/$MAC/ s/yes/no/" $internetcontrolmacfile
              updatesquid
          ;;
          *)
              echo $"Usage: $0 {add|del}"
              exit 1
esac

脚本被cron调用执行时需注意事项 - 青新 - 青新的博客

  评论这张
 
阅读(993)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017