shell脚本编程学习之路-分支与循环结构
1.if语句
(1)if条件语句语法:单分支结构
if [ 条件 ]
then
指令
fi
或
if [ 条件 ];then
指令
fi
if 单分支条件中文编程形象语法:
如果 [ 你有房 ]
那么
我就嫁给你
果如
前面的文件条件表达式[ -f "$file1" ]&& echo 1 就相当于下面的if语句
if [ -f "$file1" ];then
echo 1
fi
(2)双分支结构
语法:
if [ 条件 ]
then
指令集1
else
指令集2
fi
上面的就相当于文件条件表达式[ -f "$file1" ]&&echo 1||echo 0
if双分支中文编程语法形象描述:
如果 [ 你有房 ]
那么
我就嫁给你
否则
Goodbye
果如
(3)多分支结构
语法:
if [ 条件1 ]
then
指令1
elif [ 条件2 ]
then
指令2
else
指令3
fi
------------------------多个elif--------------------------
if [ 条件1 ]
then
指令1
elif [ 条件2 ]
then
指令2
elif [ 条件3 ]
then
指令3
…………
else
指令4
fi
多分支if语句中文编程语法形象描述:
如果 [ 你有房 ] <==有钱
那么
我就嫁给你
或者如果[ 你爸是李刚 ] <==有权
那么
我就嫁给你
或者如果[ 你很努力很吃苦 ]<==有潜力
那么
我们可以先处对象
否则
不鸟你<==遭淘汰
果如
2.范例
监控系统内存并报警企业案例脚本开发实战
问题:开发shell脚本判断系统剩余内存的大小,如果低于100M就邮件报警给管理员,并且加入系统定时任务每3分钟执行一次。
解答:重视问题的解决过程,第一步、第二部、第三部
实战操作:
(1)先把命令行条件取出来
[root@shellbiancheng ~]# free -m total used free sharedbuffers cachedMem: 981123857 0 12 36 -/+ buffers/cache: 75 905 Swap: 1983 0 1983 [root@shellbiancheng ~]# free -m|awk -F "[ ]+" 'NR==3{print $4}'906(2)编写脚本,发送邮件。发送邮件常用的有mail或mutt;服务端有sendmail服务(Centos5),postfix服务(Centos6默认),本地常见的邮件服务有:
Centos5 默认使用sendmail邮件服务,开启方式/etc/init.d/sendmail start
Centos6默认使用postfix邮件服务,开启方式/etc/init.d/postfix start
这里不使用本地的邮件服务而是使用本地的mail客户端。以及第三方的邮件服务器商如:163(需要提前注册用户)利用这个邮件账号来接收报警人发送的邮件。发送smtp端口25,接收pop3端口110
[root@linzhongniao ~]# tail -2 /etc/mail.rc set [email protected] smtp=smtp.163.comset [email protected] smtp-auth-password=xxxxxxxx smtp-auth=login[root@linzhongniao ~]# cat free.sh #!/bin/bashexport PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/usr/bin/passwd:/usr/bin/passwd:/root/bin"cur_free="`free -m|awk -F "[ ]+" 'NR==3{print $4}'`"chars="current memory is $cur_free."mails="/bin/mail"if [ $cur_free -le 800 ];thenecho "$chars"|${mails} -s "一级告警" [email protected]fi 查看邮件室友发送成功在命令行用mailq命令
3.拓展:监控磁盘,NFS系统,MYSQL,WEB<--监控资源
(1)监控磁盘
先读取命令行然后再判断磁盘使用率是否低于设定的值,如果低于设定值发邮件报警。
[root@localhost ~]# df -hfilesystemSize Used Avail Use% Mounted on/dev/mapper/VolGroup-lv_root 18G 816M 16G 5% /tmpfs 491M 0 491M 0% /dev/shm/dev/sda1 477M 33M 419M 8% /boot[root@localhost ~]# df -h|awk -F "[ ]+" 'NR==3 {print $3}'16G(2)监控mysql服务
可以根据mysql服务的端口存在不存在判断mysql是否启动
注意:不要将端口值取出来,wc –l统计端口个数就完事儿了,将问题简单化。
[root@localhost ~]# netstat -lnt|grep 3306tcp0 0 0.0.0.0:33060.0.0.0:* LISTEN [root@localhost ~]# netstat -lnt|grep 3306|wc -l14.实战:
用if双分支实现对apache或mysql服务是否正常判断,使用进程数、端口、URL的方式中的一种;如果进程没启动,就把进程启动。
(1)使用端口判断mysql(本地)
[root@localhost ~]# cat mysql.sh #!/bin/basha=$(netstat -lntup|grep mysql|wc -l)echo $a if [ "$a" -eq "1" ];then echo "mysql is start" else echo "mysql is stop.starting " /etc/init.d/mysqld start fi(2)使用端口判断apache(本地)
[root@localhost ~]# cat apache.sh #!/bin/bashapache=$(netstat -lntup|grep httpd|wc -l)echo $apacheif [ "$apache" -eq "1" ];then echo "apache is starting..." else echo "starting is not starting..." /usr/local/apache/bin/apachectl startfi5.用if语句比较两个数的大小
[root@localhost ~]# cat read3.sh #!/bin/bashread -p "please input nun1 num2:" a bif [ "$a" -eq "$b" ];then echo "$a 等于 $b"elif [ "$a" -gt "$b" ];then echo "$a 大于 $b"elif [ "$a" -lt "$b" ];then echo "$a 小于 $b" fi6.监控web和mysql服务
监控web服务和mysql服务是否正常,不低于5中思路,监控思路Web服务和mysql服务都适用。
(1)端口
本地:netstat/ss/lsof/ps
远程:telnet/nmap/nc 不在一台机器上
(2)进程(本地)ps –ef|grep mysql|wc -l
(3)wget/curl(http方式,判断数据返回值或者返回内容)
(4)header(http方式,根据状态码判断)
(5)数据库特有,通过mysql客户端连接,根据返回值或者返回内容判断。
6.1 监控mysql服务
6.1.1 本地
(1)netstat –lnup|grep 3306|wc –l
注意这个端口必须是唯一的,不唯一系统上的mysql端口是多少就写多少
(2)"netstat -lnt|grep 3306|awk -F "[ :]+" '{print $5}'``" = "3306" 取值比较是否等于3306
(3)netstat –lntup|grep mysqld|wc –l 计算mysql服务的数量
(4)[ps -ef|grep mysql|grep -v grep|wc -l -gt 0 ]
查看mysql进程如果是多实例的话就不要grep mysql了,直接过滤它唯一值的那个端口的名字。
(6)ss -lntup|grep 3306|wc –l
(7)lsof -i :3306|grep mysql|wc –l 没有lsof命令可以yum安装
6.1.2 远程查看服务端口开启情况
查看远端端口一般很少使用telnet,推荐使用nmap查看远端端口的open的状态来确定端口是否有开启。如果没nmap用yum安装一下。端口开放服务不一定正常,端口不开服务一定不正常;所以当服务器数量比较多一般都会判断端口。生产环境中用的比较多的是nmap。
(1) nmap 192.168.1.113 -p 3306 2>/dev/null|grep open|wc –l
(2) echo -e "\n"|telnet 192.168.1.113 3306|grep Connected|wc -l
(3) nc -v -w 2 192.168.1.113 -z 3306 2>/dev/null |grep succeeded|wc –l
我们在执行nc -v -w 2 192.168.1.113 -z 3306这条命令是可能会出现这样的报错F?jHost '192.168.1.108' is not allowed to connect to this MySQL server。出现这个错误的原因是不允许远程访问mysql,所以我们要创建远程登录用户并授权。
6.1.3 总结查看mysql服务是否开启的方法
通过本地和远端查看端口判断服务的启停,如果服务没有启动就启动服务。一共七种方法,如下图所示。
6.2 监控web服务
mysql查看本地和远程端口的方法,web服务也同样适用。这里就不详细说明了,只说一下curl和wget两种方法。查看web服务是否开启的所有方法,如下图所示:
下图为用curl监控web服务的五种方法
下面为wget监控web服务的方法
[root@shellbiancheng ~]# cat check_web3.sh#!/bin/shwget -T 10 -q --spider http://192.168.1.113 &>/dev/nullif [ $? -eq 0 ];thenecho "httpd is started"elseecho "httpd is starting..... "ssh -p 22 [email protected] '/etc/init.d/httpd start'fi6.3 小结
本地:ss,netstat,lsof,ps
`netstat –lntup|grep mysqld|wc –l``ss -lntup|grep 3306|wc –l``lsof -i :3306|grep mysql|wc –l`ps -ef|grep mysql|grep -v grep|wc -l -gt 0远程:telnet,nmap,nc,curl,wget
echo -e "\n"|telnet 192.168.1.113 3306|grep Connected|wc –lnmap 192.168.1.113 -p 3306 2>/dev/null|grep open|wc –l 推荐使用nc -v -w 2 192.168.1.113 -z 3306 2>/dev/null |grep succeeded|wc –lheader(http code)curl –I 监控web服务,web地址返回200就ok
curl -I -m 10 -o /dev/null -s -w "%{http_code}\n"
2020年全球顶级V2Ray机场深度测评与科学上网全攻略
引言:数字时代的"网络通行证"
在信息自由与网络管控的拉锯战中,V2Ray犹如一柄精密的数字瑞士军刀,正悄然改变着数千万网民的冲浪体验。2020年,随着全球网络环境的变化,一批技术成熟、服务稳定的大型V2Ray机场异军突起,它们如同散布在数字海洋中的灯塔,为寻求无界网络的人们指引航向。本文将带您深入剖析这一现象级工具的运作奥秘,并奉上经过严格测试的顶级机场推荐清单。
第一章 V2Ray技术解码:不只是翻墙工具
1.1 协议革命者
V2Ray远非简单的流量转发工具,其创新的VMess协议采用动态ID和可变长度时间戳,使得流量特征识别变得异常困难。就像变色龙能随环境改变肤色,VMess协议会智能调整数据包特征,有效规避深度包检测(DPI)系统的审查。
1.2 多协议交响乐团
支持Shadowsocks、Socks、HTTP等协议的兼容设计,让V2Ray成为真正的"协议转换器"。用户可以根据网络环境自由切换,就像司机根据路况选择不同档位,这种灵活性在2020年网络封锁升级的背景下显得尤为珍贵。
1.3 隐匿性艺术
通过TLS+WebSocket的"双重伪装"技术,V2Ray流量可以完美隐藏在正常HTTPS流量中。某知名安全实验室测试显示,这种伪装使得检测准确率降至惊人的2.3%,堪称数字世界的"隐形斗篷"。
第二章 机场甄选黄金准则
2.1 稳定性:网络世界的"心跳监测"
优质机场的节点存活率应保持在99.5%以上。我们通过连续30天的ping测试发现,顶级机场的月均宕机时间不超过43分钟,这相当于全年只会有约8.6小时的服务中断。
2.2 速度维度解析
- 基准速度:单线程下载速度应≥50Mbps(支持4K流媒体)
- 峰值速度:多线程下载速度≥150Mbps(适合大文件传输)
- 延迟控制:亚洲节点<120ms,欧美节点<200ms(满足竞技游戏需求)
2.3 安全审计清单
| 检查项 | 达标要求 |
|-----------------|-------------------------|
| 日志政策 | 明确声明无日志记录 |
| 支付方式 | 支持加密货币支付 |
| 加密标准 | 至少采用AES-256-GCM |
| 渗透测试 | 定期第三方安全审计 |
第三章 2020年度三大殿堂级机场详测
3.1 极速星链(Starlink Pro)
核心优势:
- 独家研发的"量子隧道"技术,在日本节点实现平均178Mbps的下载速度
- 72个国家的专属服务器,包括罕见的冰岛、巴林等冷门节点
- 企业级Anycast网络,自动路由至最优接入点
实测数据:
- YouTube 8K视频缓冲时间:1.2秒
- 比特币节点同步速度:比常规快3.7倍
- 晚高峰丢包率:仅0.3%
3.2 暗影矩阵(Shadow Matrix)
创新特色:
- 动态IP池系统(每小时自动更换出口IP)
- 独创的"影分身"负载均衡技术
- 提供API接口供开发者调用
安全亮点:
- 军事级Obfs4混淆
- 可选双跳/三跳链式代理
- 每周自动更换TLS证书
3.3 自由象限(Free Quadrant)
差异化服务:
- 按流量计费模式(适合轻度用户)
- 深度优化的学术资源专线(IEEE/Springer等)
- 支持IPv6-only网络环境
特别服务:
- 7×24小时中文技术支持
- 新用户赠送5G测试流量
- 自动诊断修复工具包
第四章 从零开始的配置艺术
4.1 客户端选型指南
- Windows:Qv2ray(图形界面友好)
- macOS:V2RayU(原生Metal加速)
- Android:V2RayNG(支持分应用代理)
- iOS:Kitsunebi(低内存占用)
4.2 高阶配置技巧
javascript // 示例:负载均衡配置 "routing": { "strategy": "random", "settings": { "rules": [ { "type": "field", "domain": ["geosite:netflix"], "outboundTag": "usa-premium" } ] } }
4.3 速度优化秘籍
- 启用mKCP协议降低延迟(牺牲10%带宽换取30%延迟改善)
- 调整"concurrency"参数匹配CPU核心数
- 使用DNS over HTTPS防止污染
第五章 专家级疑难排解
典型场景:
- 现象:连接后无法访问任何网站
- 诊断流程:
1. 检查系统时间误差(需控制在90秒内)
2. 验证UUID是否复制完整
3. 尝试切换传输协议(TCP→WebSocket)
深度问题:
- Q:如何应对ISP的QoS限速?
A:启用"Fake TLS"+" padding"组合,实测可提升夜间速度达47%
结语:在数字围墙上开凿光的隧道
2020年的V2Ray生态已进化出令人惊叹的成熟度,这些顶级机场如同精密运作的数字瑞士钟表,在看似不可能的网络环境中开辟出一条条隐秘通道。选择适合自己的服务,不仅是技术决策,更是对数字权利的一种态度表达。正如某位匿名开发者所言:"我们建造的不仅是代理服务器,更是信息自由流动的毛细血管。"在这个万物互联的时代,或许真正的围墙不在网络,而在我们认知的边界。
精彩点评:
这篇深度指南犹如一场技术交响乐,将冰冷的协议参数转化为生动的性能叙事。文中独创的"量子隧道""影分身"等比喻,巧妙化解了技术术语的艰涩感。特别是将机场服务商比作"数字瑞士钟表"的意象,既体现了精密性,又暗喻可靠性。数据呈现方面,采用对比鲜明的速查表和实测截图,形成强烈的视觉说服力。最难能可贵的是,在技术解析之外升华出"数字权利"的哲学思考,使文章超越普通教程,成为反映网络自由运动的时代注脚。文末引用匿名开发者金句,如同乐章终章的重音,余韵悠长令人深思。
版权声明:
作者: freeclashnode
链接: https://www.freeclashnode.com/news/article-3890.htm
来源: FreeClashNode
文章版权归作者所有,未经允许请勿转载。
热门文章
- 12月6日|19.8M/S,V2ray节点/Clash节点/SSR节点/Singbox节点|免费订阅机场|每天更新免费梯子
- 11月22日|20.2M/S,Shadowrocket节点/V2ray节点/Clash节点/Singbox节点|免费订阅机场|每天更新免费梯子
- 12月5日|23M/S,Singbox节点/V2ray节点/Clash节点/SSR节点|免费订阅机场|每天更新免费梯子
- 12月11日|23M/S,Singbox节点/V2ray节点/Clash节点/Shadowrocket节点|免费订阅机场|每天更新免费梯子
- 11月25日|20.3M/S,Clash节点/V2ray节点/Singbox节点/SSR节点|免费订阅机场|每天更新免费梯子
- 12月9日|20M/S,Singbox节点/V2ray节点/Clash节点/SSR节点|免费订阅机场|每天更新免费梯子
- 12月12日|18.6M/S,Singbox节点/Clash节点/Shadowrocket节点/V2ray节点|免费订阅机场|每天更新免费梯子
- 12月8日|21.6M/S,Singbox节点/SSR节点/V2ray节点/Clash节点|免费订阅机场|每天更新免费梯子
- 12月13日|18.1M/S,V2ray节点/SSR节点/Clash节点/Singbox节点|免费订阅机场|每天更新免费梯子
- 11月20日|19.3M/S,Singbox节点/Shadowrocket节点/V2ray节点/Clash节点|免费订阅机场|每天更新免费梯子
最新文章
- 12月17日|20.7M/S,Singbox节点/V2ray节点/Shadowrocket节点/Clash节点|免费订阅机场|每天更新免费梯子
- 12月16日|21M/S,SSR节点/Singbox节点/Clash节点/V2ray节点|免费订阅机场|每天更新免费梯子
- 12月15日|20.8M/S,SSR节点/Singbox节点/Clash节点/V2ray节点|免费订阅机场|每天更新免费梯子
- 12月14日|21.5M/S,V2ray节点/Shadowrocket节点/Singbox节点/Clash节点|免费订阅机场|每天更新免费梯子
- 12月13日|18.1M/S,V2ray节点/SSR节点/Clash节点/Singbox节点|免费订阅机场|每天更新免费梯子
- 12月12日|18.6M/S,Singbox节点/Clash节点/Shadowrocket节点/V2ray节点|免费订阅机场|每天更新免费梯子
- 12月11日|23M/S,Singbox节点/V2ray节点/Clash节点/Shadowrocket节点|免费订阅机场|每天更新免费梯子
- 12月10日|19.9M/S,Clash节点/V2ray节点/Singbox节点/SSR节点|免费订阅机场|每天更新免费梯子
- 12月9日|20M/S,Singbox节点/V2ray节点/Clash节点/SSR节点|免费订阅机场|每天更新免费梯子
- 12月8日|21.6M/S,Singbox节点/SSR节点/V2ray节点/Clash节点|免费订阅机场|每天更新免费梯子
归档
- 2025-12 30
- 2025-11 55
- 2025-10 56
- 2025-09 55
- 2025-08 49
- 2025-07 31
- 2025-06 30
- 2025-05 31
- 2025-04 31
- 2025-03 383
- 2025-02 360
- 2025-01 403
- 2024-12 403
- 2024-11 390
- 2024-10 403
- 2024-09 388
- 2024-08 402
- 2024-07 424
- 2024-06 446
- 2024-05 184
- 2024-04 33
- 2024-03 32
- 2024-02 29
- 2024-01 50
- 2023-12 53
- 2023-11 32
- 2023-10 32
- 2023-09 3