本人一直从事Windows系统的开发,最近一年基本上都在研究.NET跨平台相关的知识,最近遇到一个棘手的问题,由于前期技术选型的时候说采用WebAPI的方式进行部署,我当时就答应了,到最后上线的时候突然发现一个逆天的功能,需要通过API修改系统的IP,子网掩码,网关,设置完成以后系统需要重启
负责开发的同事完全按照windows上的编程模式,使用Windows内部函数修改这些参数并完成重启,但是在Linux上就行不通了,最后想了一个办法,设置一个定时计划,动态监控配置文件的方式,通过WebAPI写一个Shell文件,然后Linux通过定时任务检测改文件,如果该文件存在,就执行该文件,执行成功以后删除该文件,然后再刷新网络,重启电脑,废话不多说,具体实现如下:
编写定时任务执行脚本
initial.sh
| #!/etc/bash |
| folder="/var/www/default" |
| file="/var/www/default/network.sh" |
| if [ ! -d "$folder" ]; then |
| mkdir "$folder" |
| fi |
| echo "----------->" >> "/var/www/default/log.log" |
| if [ -f "$file" ]; then |
| echo $file |
| source "$file" |
| echo "==========>" >> "/var/www/default/log.log" |
| rm -rf $file |
| fi |
network.sh[该文件由API写入]
| #!/bin/sh |
| |
| |
| |
| |
| |
| |
| |
| PROC=/bin/sed |
| IP_PATH=/etc/sysconfig/network-scripts/ifcfg-eth1 |
| GW_PATH=/etc/sysconfig/network |
| IP_PRI=`grep -i ipaddr $IP_PATH|awk -F "=" '{printf $2 }'` |
| MASK_PRI=`grep -i netmask $IP_PATH|awk -F "=" '{printf $2}'` |
| GW_PRI=`grep -i GATEWAY $GW_PATH|awk -F "=" '{printf $2}'` |
| IP_MOD=192.168.1.214 |
| MASK_MOD=255.255.0.0 |
| GW_MOD=192.168.1.1 |
| |
| $PROC -i "s/$IP_PRI/$IP_MOD/g" $IP_PATH |
| $PROC -i "s/$MASK_PRI/$MASK_MOD/g" $IP_PATH |
| $PROC -i "s/$GW_PRI/$GW_MOD/g" $GW_PATH |
| |
| /etc/rc.d/init.d/network restart |
设置定时任务
| ## For excuting scripts.sh every 3 seconds##on 2016年9月20日 17:41:53 |
| */1 * * * * /bin/bash /var/www/default/initial.sh |
| */1 * * * * sleep 5 && /bin/bash /var/www/default/initial.sh |
| */1 * * * * sleep 10 && /bin/bash /var/www/default/initial.sh |
| */1 * * * * sleep 15 && /bin/bash /var/www/default/initial.sh |
| */1 * * * * sleep 20 && /bin/bash /var/www/default/initial.sh |
| */1 * * * * sleep 25 && /bin/bash /var/www/default/initial.sh |
| */1 * * * * sleep 30 && /bin/bash /var/www/default/initial.sh |
| */1 * * * * sleep 35 && /bin/bash /var/www/default/initial.sh |
| */1 * * * * sleep 40 && /bin/bash /var/www/default/initial.sh |
| */1 * * * * sleep 45 && /bin/bash /var/www/default/initial.sh |
| */1 * * * * sleep 50 && /bin/bash /var/www/default/initial.sh |
| */1 * * * * sleep 55 && /bin/bash /var/www/default/initial.sh |
| #----------------------------------------------------------------- |
注意事项
permission denied
参考文档:http://jingyan.baidu.com/article/90808022fa50dbfd90c80f52.html
etc/bash: bad interpreter:
参考文档:http://gubit.blog.sohu.com/30564154.html
如何通过秒设置定时任务?
| |
| */1 * * * * /home/somedir/scripts.sh |
| */1 * * * * sleep 3 && /home/somedir/scripts.sh |
| */1 * * * * sleep 6 && /home/somedir/scripts.sh |
| */1 * * * * sleep 9 && /home/somedir/scripts.sh |
| */1 * * * * sleep 12 && /home/somedir/scripts.sh |
| */1 * * * * sleep 15 && /home/somedir/scripts.sh |
| */1 * * * * sleep 18 && /home/somedir/scripts.sh |
| */1 * * * * sleep 21 && /home/somedir/scripts.sh |
| */1 * * * * sleep 24 && /home/somedir/scripts.sh |
| */1 * * * * sleep 27 && /home/somedir/scripts.sh |
| */1 * * * * sleep 30 && /home/somedir/scripts.sh |
| */1 * * * * sleep 33 && /home/somedir/scripts.sh |
| */1 * * * * sleep 36 && /home/somedir/scripts.sh |
| */1 * * * * sleep 39 && /home/somedir/scripts.sh |
| */1 * * * * sleep 42 && /home/somedir/scripts.sh |
| */1 * * * * sleep 45 && /home/somedir/scripts.sh |
| */1 * * * * sleep 48 && /home/somedir/scripts.sh |
| */1 * * * * sleep 51 && /home/somedir/scripts.sh |
| */1 * * * * sleep 54 && /home/somedir/scripts.sh |
| */1 * * * * sleep 57 && /home/somedir/scripts.sh |
| |
参考文档:http://www.tuicool.com/articles/QJr2ErF
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?