当前位置: 首页 > news >正文

外贸网站 在线留言遵义做网站建设哪家公司好

外贸网站 在线留言,遵义做网站建设哪家公司好,嘉兴网站制作费用,wordpress网站布置视频教程第四章 流程控制之条件判断 条件判断语句是一种最简单的流程控制语句。该语句使得程序根据不同的条件来执行不同的程序分支。本节将介绍Shell程序设计中的简单的条件判断语句。 if语句语法 单分支结构 # 语法1#xff1a; if 条件表达式 then指令 fi #语法2#x…第四章 流程控制之条件判断 条件判断语句是一种最简单的流程控制语句。该语句使得程序根据不同的条件来执行不同的程序分支。本节将介绍Shell程序设计中的简单的条件判断语句。 if语句语法 单分支结构 # 语法1 if 条件表达式 then指令 fi #语法2 if 条件表达式;then指令 fi 双分支结构 if 条件表达式 then指令序列1 else指令序列2 fiif id username;thenecho elseecho cunzai fi 多分支结构 语法 if 条件表达式1;then命令序列1 elif 条件表达式2;then命令序列2 .... else命令序列n fi 案例 例1编写脚本choice1.sh利用单分支结构实现输入2个整数输出最大值 [rootserver ~]# vim choice1.sh ​ #!/bin/bash ​ read  -p  请输入第一个整数: x ​ read  -p  请输入第二个整数: y ​ max$x ​ if (($maxy)) thenmax$y fi ​ echo  最大值$max 例2面试题编写脚本choice2.sh判断系统内存剩余容量大小若低于100M则发送消息进行告警 #!/bin/bash ​ free_mem$( free -m | grep Mem | tr -s | cut -d -f4 ) ​ if (($free_mem100)) thenecho  警告剩余内存$free_mem ,低于警戒线100MB elseecho  剩余内存$free_mem,空间足够. fi ​ # free -m 表示显示内存即虚拟内存的信息-m以MB单位显示数字 # grep Mem表示过滤包含Mem所在行 # tr -s 压缩空格为一个 # cut -d -f4 :以空格为间隔符取其第4部分 扩展编写脚本判断当前系统剩余内存大小如果低于100M邮件报警管理员使用计划任务每10分钟检查一次。 [rootlocaklhost ]# echo 邮件正文 | mail -s 邮件主题 alice 分析核心是如何获取当前剩余内存大小 [rootlocalhost ~]# free -m | grep Mem: |tr -s | cut -d -f4 600 [rootlocalhost ~]# free -m | awk /Mem:/ {print $4} 600 vim mem.sh memfree -m |grep Mem | tr -s | cut -d “ ” -f 4 free -m | grep Mem | awk -F ‘{print }’ if test $mem \ 100 ;thenecho 内存严重不足 | mail -s 内存报警 lxx163.com elseecho 内存足够 fi例3编写脚本choice3.sh判断当前脚本的执行者若不是root账户则提示并退出 # 检查当前账户的4种方法 [rootserver ~]# whoami root#使用环境变量 [rootserver ~]# echo $USER root ​ #id -u结果为零则为root [rootserver ~]# id -u 0[rootserver ~]# echo $UID 0 [rootserver ~]# vim choice3.sh #!/bin/bash ​ if [ $USER ! root ] #或者if [ $c_user root ];then then    echo  please switch user root fi       ​ [rootserver ~]# bash choice3.sh   # root账户下执行 [rootserver ~]# pwd /root [rootserver ~]# mv choice3.sh / # 让普通账户能访问脚本需要移动到/ [rootserver ~]# chmod x /choice3.sh # 赋予执行权限 [rootserver ~]# ll /choice3.sh -rwxr-xr-x 1 root root 81  6月 18 10:10 /choice3.sh [rootserver ~]# tail -1 /etc/passwd   # 查看普通账户名 fox:x:1000:1000::/home/fox:/bin/bash [rootserver ~]# su fox           # 切换账户 [foxserver root]$ cd / [foxserver /]$ bash choice3.sh     please switch user root 例4编写脚本choice4.sh实现闰年的判断 [rootserver ~]# vim choice4.sh #!/bin/bash ​ read -p 请输入4位数整数年份: year if [ -n $year ]                    # 非空测试 thenif ((year%40)) ((year%100!0)) || ((year%4000))thenecho  闰年elseecho  平年fi elseecho  请输入有效4位整数年份 fi 例5判断数字大于500则执行big.sh 小于等于500则退出脚本并输出报错信息 read -p s数字 num if [ $num -gt 500 ] ;thenbash /big.sh elseexit 0 fi 例6编写脚本choice5.sh判断sshd是否运行 分析核心在于判断进程是否运行的方法 方法1查看进程 systemctl is-active sshd systemctl status sshd [rootlocalhost ~]# ps -elf | grep sshd | grep -v grep | wc -l 4 方法2查看端口 本地查看netstat、ss、lsof --- https://www.jianshu.com/p/644e75af4405 远程查看telnet、nmap、nc [rootlocalhost ~]# netstat -lnupt | grep 22 | wc -l 2 [rootlocalhost ~]# ss -lnupt | grep 22 | wc -l 2 [rootlocalhost ~]# lsof -i:22 [rootlocalhost ~]# nmap -p 22 127.0.0.1 | grep open | wc -l 1 # 分析 # 根据进程数判断 [rootserver ~]# ps -ef | grep sshd | grep -v grep | wc -l ​ # 根据端口号判断 [rootserver ~]# netstat -lntup | grep 22 | wc -l [rootserver ~]# vim choice5.sh #!/bin/bash ​ num$(ps -ef | grep sshd | grep -v grep | wc -l) ​ if (($num0)) thenecho  sshd is running elseecho  sshd is not running fi方法2 read -p 请输入要判断的程序名称 server_name countps -aux | grep -cw $server_nameif [ $count -gt 1 ];thenecho $server_name服务已运行 elseecho $server_name服务未运行 fi 例7面试题编写脚本choice6.sh判断主机是否存活 [rootserver ~]# vim choice6.sh #!/bin/bash ​ read -p 请输入测试主机的IP地址 ip ​ ping  -c 2 -w 3 $ip /dev/null # -c 2 表示发送2个数据包-w 3 表示等待3秒结束注意不能等待1秒结束有可能第二个数据包没有ping完就结束了会返回错误的状态码 ​ if [ $? -eq 0 ] thenecho  主机$ip 已运行 elseecho  主机$ip 未运行 fi # 上例修改使用循环测试多台主机是否存活设置显示颜色 [rootserver ~]# vim choice6.sh #!/bin/bash ​ for ip in 192.168.48.{125..135} do ​ping  -c 2 -w 3 $ip /dev/nullif [ $? -eq 0 ]thenecho -e  \e[1;31m!!主机 $ip 已运行!!\e[0m  # 高亮、红色elseecho  主机$ip 未运行fi done 例8编写脚本choice7.sh输入百分制成绩判断等级成绩 [rootserver ~]# vim choice7.sh #!/bin/bash ​ read -p 请输入百分制成绩: score ​ if [ -z $score ] thenecho  未输入请重新输入 elif   [ $score -lt 0 -o $score -gt 100 ] thenecho  成绩输入有误请输入0-100间数字 elif [ $score -ge 90 ] thenecho  成绩优秀 elif   [ $score -ge 80 ] thenecho  成绩良好 elif   [ $score -ge 60 ] thenecho  成绩及格 elseecho  补考 fi 扩展根据用户输入成绩判断优良中差。85-100 优秀--A 70-84 良好--B 60-69 合格--C 60分以下不合格--D read -p Please enter your score (0-100): gradeif [ $grade -ge 85 ] thenecho $grade, A elif [ $grade -ge 70 ] thenecho $grade, B elif [ $grade -ge 60 ] thenecho $grade, C elseecho $grade, D fi更完善的多层嵌套 grade$1if [[ $1 ~ ^[0-9]*$ ]];then #判断是否是纯数值有小数也不行if [ $grade -ge 85 -a $grade -le 100 ];thenecho $grade, Aelif [ $grade -ge 70 -a $grade -le 84 ];thenecho $grade, Belif [ $grade -ge 60 -a $grade -le 69 ];thenecho $grade, Celif [ $grade -ge 0 -a $grade -le 60 ];thenecho $grade, Delseecho 输入的成绩不在0-100范围内fi elseecho 请输入正确成绩 fi解释$1 ~ ^[0-9]*$ ~正则符匹配 ^[0-9]以0-9开头的任意一个 *匹配前一个字符任意次正则符 $结束符保证数值结束前后没有其他信息 例9编写脚本根据用户输入的内容判断是数字、字母、其它字符 [rootserver ~]# vim choice8.sh ​ #!/bin/bash ​ read -p  请输入数字、字母、符号: str ​ if  echo  $str | grep [a-zA-Z] /dev/null thenecho  字母 elif   echo  $str | grep [0-9] /dev/null thenecho  数字 elseecho  符号 fi 例10编写脚本choice9.sh判断当前主机cpu生产商 其信息在/proc/cpuinfo文件中vendor_id一行中。 如果其生产商为GenuineIntel就显示其为Intel公司 如果其生产商为AuthenticAMD就显示其为AMD公司 否则就显示无法识别 [rootserver ~]# vim choice9.sh #!/bin/bash ​ vendor$(grep vendor_id /proc/cpuinfo | uniq | cut -d -f2) ​ if [ $vendor GenuineIntel ] then    echo  Intel elif [ $vendor AuthenticAMD ] then    echo  AMD else    echo   other fi   例11两个整数比较大小if嵌套 read -p 请输入整数 a read -p 在次输入 b if [ -n $a -a -n $b ];then[[ $a ~ ^[0-9]$ ]] [[ $b ~ ^[0-9]$ ]]# echo $a|[ -n sed -n /^[0-9]*$/p ] echo $b |[-n sed -n /^[0-9]*$/p]if [ $? -eq 0 ];thenif [[ $a -gt $b ]];thenecho 第一个数大于第二个数elif [[ $a -lt $b ]];thenecho 第一个数小于第二个数elseecho 两个数相等fielseecho 请输入数字fi elseecho 输入信息不能为空 fi exit退出程序 复习 exit语句的基本作用是终止Shell程序的执行。除此之外exit语句还可以带一个可选的参数用来指定程序退出时的状态码。exit语句的基本语法如下 exit status其中status参数表示退出状态该参数是一个整数值其取值范围为0~255。与其他的Shell命令的一样Shell程序的退出状态也储存在系统变量$?中因此用户可以通过该变量取得Shell程序返回给父进程的退出状态码。 case多条件判断 case可针对谋变量不同的值结果进行情景分析。 格式 case 变量名 in值1)指令1;;值2)指令2;;值3)指令3 ;;*默认 esac也可以写在一行例 值1) 指令1 ;; 最后一个;;可以写也可以不写 执行过程 case语句会将该变量的值与 )括号中的值相比较如果与某个值相等则执行对应语句。 当遇到“;;”符号时就跳出case语句执行esac语句后面的语句。 如果没有与任何一个值相匹配则执行*)后面的一组语句 示例 例1编写脚本choice10.sh对上例7的百分制成绩判断等级成绩进行改写 [rootserver ~]# vim choice10.sh #!/bin/bashread -p 请输入百分制成绩: scorecase $score in9[0-9]|100)echo 成绩优秀;;8[0-9])echo 成绩良好;;6[0-9]|7[0-9])echo 成绩及格;;*)echo 补考 esac 例2判断今天是星期几根据星期几来判断今天是工作日还是休息日 [rootserver ~]# vim choice11.sh #!/bin/bash adate %w   #将日期转换为星期几用数字0-6表示 case $a in [1-5])echo 今天是工作日社畜没有休息日哦。;; [06])echo 哦~今天是休息日呢请好好休息哦~;; esac 例3由用户从键盘输入一个字符并判断该字符是否为字母、数字或者其他字符 并输出相应的提示信息 read -p Please enter a character, press enter to continue: -n 1 str if echo $str|grep [a-zA-Z] /dev/null thenecho Input is letter elif echo $str|grep [0-9] /dev/null thenecho Input is number elseecho Input is other firead -p Please enter a character, press enter to continue: -n 1 KEY case $KEY in[[:alpha:]])echo Input is letter;;[0-9])echo Input is number;;*)echo Input is other characters esac 例4将判断分数范围多分支语句用case语句实现 read -p Please enter your score (0-100): grade case $grade in8[5-9]|9[0-9]|100) #{85..100} [85-100]echo $grade, A;;7[0-9]|8[0-4])echo $grade, B;;6[0-9])echo $grade, C;;*)echo $grade, D esac 练习 开发rsync起停脚本 [rootserver ~]# vim cc_rsync ​ #!/bin/bash ​ if [ $# -ne 1 ]; thenecho Usage: $0 {start|stop|restart}exit 1 fi ​ # 当用户选择是start case $1 instart)/usr/bin/rsync --daemonsleep 1if [ netstat -lntup | grep rsync | wc -l -ge 1 ]; thenecho rsync is startedexit 0fi;;stop)killall rsync /dev/nullsleep 1if [ netstat -lntup | grep rsync | wc -l -eq 0 ]; thenecho rsync is stoppedexit 0fi;;restart)if [ netstat -lntup | grep rsync | wc -l -ge 1 ]; thenkillall rsync /dev/nullsleep 1fi/usr/bin/rsync --daemonsleep 1start_flagnetstat -lntup | grep rsync | wc -l#if [ $stop_flag -eq 0 -a $start_flag -ge 1 ]; then#if [ $stop_flag -eq 0 $start_flag -ge 1 ]; thenif [ netstat -lntup | grep rsync | wc -l -ge 1 ]; thenecho rsync is restartedexit 0fi;;*)echo Usage: $0 {start|stop|restart} esac 扩展远程端口监听 telnet nmap nc ncnetcat 是一个简单的 Unix 工具它使用 TCP 或 UDP 协议去读写网络连接间的数据。 nmap“Network Mapper”是一个用于网络探索和安全审计的开源工具被设计用来快速地扫描大规模网络。 telnet被用来交互地通过 TELNET 协议与另一台主机通信。 1nc 即 netcat。netcat 是一个简单的 Unix 工具它使用 TCP 或 UDP 协议去读写网络连接间的数据。 它被设计成为一个可信赖的后端工具可被直接使用或者简单地被其他程序或脚本调用。 与此同时它也是一个富含功能的网络调试和探索工具因为它可以创建你所需的几乎所有类型的连接并且还拥有几个内置的有趣功能。 netcat 有三类功能模式它们分别为连接模式、监听模式和隧道模式。 ncnetcat命令的一般语法 $ nc [-options] [HostName or IP] [PortNumber] 在下面的例子中我们将检查远程 Linux 系统中的 22 端口是否开启。 假如端口是开启的你将获得类似下面的输出。 # nc -zvw3 192.168.1.8 22 Connection to 192.168.1.8 22 port [tcp/ssh] succeeded! 命令详解 nc即执行的命令主体 z零 I/O 模式被用来扫描 v显式地输出 w3设置超时时间为 3 秒 192.168.1.8目标系统的 IP 地址 22需要验证的端口。 当检测到端口没有开启你将获得如下输出 # nc -zvw3 192.168.1.95 22 nc: connect to 192.168.1.95 port 22 (tcp) failed: Connection refused 2nmap“Network Mapper”是一个用于网络探索和安全审计的开源工具被设计用来快速地扫描大规模网络尽管对于单个主机它也同样能够正常工作。 nmap 以一种新颖的方式使用裸 IP 包来决定网络中的主机是否可达这些主机正提供什么服务应用名和版本号它们运行的操作系统系统的版本它们正在使用的是什么包过滤软件或者防火墙以及其他额外的特性。 尽管 nmap 通常被用于安全审计许多系统和网络管理员发现在一些日常任务例如罗列网络资产、管理服务升级的计划、监视主机或者服务是否正常运行中它也同样十分有用。 nmap 的一般语法 $ nmap [-options] [HostName or IP] [-p] [PortNumber] 假如端口是开启的你将获得如下的输出 # nmap 192.168.1.8 -p 22 Starting Nmap 7.70 ( https://nmap.org ) at 2019-03-16 03:37 IST Nmap scan report for 192.168.1.8 Host is up (0.00031s latency). PORT STATE SERVICE 22/tcp open ssh Nmap done: 1 IP address (1 host up) scanned in 13.06 seconds 假如端口没有开启你将得到类似下面的结果 # nmap 192.168.1.8 -p 80 Starting Nmap 7.70 ( https://nmap.org ) at 2019-03-16 04:30 IST Nmap scan report for 192.168.1.8 Host is up (0.00036s latency). ​ PORT   STATE SERVICE 80/tcp closed http ​ Nmap done: 1 IP address (1 host up) scanned in 13.07 seconds 3telnet 命令被用来交互地通过 TELNET 协议与另一台主机通信。 telnet 命令的一般语法 $ telnet [HostName or IP] 80 假如探测成功你将看到类似下面的输出 $ telnet 192.168.1.9 22 Trying 192.168.1.9... Connected to 192.168.1.9. Escape character is ^]. SSH-2.0-OpenSSH_5.3 ^] Connection closed by foreign host. 假如探测失败你将看到类似下面的输出 $ telnet 192.168.1.9 80 Trying 192.168.1.9... telnet: Unable to connect to remote host: Connection refused 示例 2检查主机是否存活并输出结果 分析最简单方式是通过ping命令检测ping -c 2 -W 1 192.168.95.16 /dev/null通过$?判断也可以直接 if ping -c 2 -W 1 192.168.95.16 /dev/null测试 扩展 [rootbogon day04]# dnf whatprovides nmap    #查询命令nmap所能提供的安装包
http://www.hkea.cn/news/14407768/

相关文章:

  • wordpress可以做电影站成都移动端网站建设
  • 济南模板网站设计html5视频标签
  • 常州网站建设联系电话网站小边框元素使用
  • 360浏览器怎么加入可信站点全国性质的网站开发公司
  • 河南高端网站建设公司淘客推广平台
  • 想象力网站建设虚拟主机的概念和功能
  • 寮步营销型网站建设flash代码做网站教程
  • 昭通市建设局网站重庆seo杨洋
  • 阿克苏地区建设局网站wordpress登录界面能改吗
  • 看课学校网站建设网络加速
  • 商城网站建设如何镇江网站制作价格
  • 如何免费建com的网站东营网格通
  • 网站建设团队成员链网
  • 莱阳网站定制没有充值入口的传奇游戏
  • 微信游戏网站开发天元建设集团有限公司电话号码
  • 中国容桂品牌网站建设如何在百度做网站
  • 北京建网站服务惠州网络营销公司
  • 做网站骗钱网络安全薪水一般多少
  • 吉首做网站定制科技软件
  • 北京市建设管理公司网站中国电影家协会成员
  • 孝感房产网站建设昌都市网站建设
  • 做网站有软件吗邢台做网站推广的公司
  • 王晴儿 网站建设wordpress别名 文章id
  • 网站设计验收排版模板素材
  • 深圳网站建设兼职上海网站建设 网站制作
  • 怎么在百度建设一个网站青岛网站建设eoeeoe
  • 成都模板建站北京做电商网站
  • html5 php网站源码下载wordpress 星星评分
  • 短视频公司网站建设方案wordpress 前端注册
  • 沈阳网 沈阳网站seo成都