网站推广论坛,泉州网站提升排名,wordpress谷歌广告位插件,微信做模板下载网站有哪些内容文章目录 简单使用shell脚本参数判断整数的比较运算符字符串的比较运算shell脚本流程控制shell脚本循环for循环批量添加用户批量ping IP地址检测同一局域网#xff0c;多台主机存活情况检测同一局域网#xff0c;多台主机存活情况多线程检测主机存活情况 while循环case选择语… 文章目录 简单使用shell脚本参数判断整数的比较运算符字符串的比较运算shell脚本流程控制shell脚本循环for循环批量添加用户批量ping IP地址检测同一局域网多台主机存活情况检测同一局域网多台主机存活情况多线程检测主机存活情况 while循环case选择语句 shell脚本就是将命令写入文本中文本可以被执行。 脚本本质是一个文件文件里面存放的是 特定格式的指令系统可以使用脚本解析器 翻译或解析 指令 并执行它不需要编译
shell 既是应用程序又是一种脚本语言应用程序 解析 脚本语言。
简单使用 $0 表示当前脚本的名称 $* 表示脚本的所有参数 $# 表示脚本的参数的个数 $ 程序执行完后的结果返回值0表示执行成功 $n 表示脚本的第n个参数,n1,2,3,4,5…9 #!bin/bash
echo 当前脚本的名称为$O双引号会解释变量 单引号会把变量当成字符串表示 没有给这个脚本赋予可执行权限就用bash来执行该脚本 #!bin/bash
echo 当前脚本的名称为$O
echo 总共有$#个参数分别是$*#!bin/bash
echo 当前脚本的名称为$O
echo 总共有$#个参数分别是$*
echo 第一个参数是$1,第三个参数是$3shell脚本参数判断
1、文件测试语句 -d 测试文件是否是目录类型 是目录返回0不是目录返回非0 -e 测试文件是否存在-f 判断是否为一般文件-r 判断当前用户对该文件是否有读取权限-w 判断当前用户对该文件是否有写入权限-x 判断当前用户对该文件是否有执行权限 2、逻辑测试语句3、整数值测试语句4、字符串比较语句 判断/etc/passwd是否为目录
┌──(kalikali)-[~/Desktop]
└─$ [ -d /etc/passwd ]┌──(kalikali)-[~/Desktop]
└─$ echo $? 1 ⨯
1
# $?表示上一步的结果用echo 输出 返回值为1表示/etc/passwd不是目录
┌──(kalikali)-[~/Desktop]
└─$ ls
demo.sh zs┌──(kalikali)-[~/Desktop]
└─$ [ -d zs ] ┌──(kalikali)-[~/Desktop]
└─$ echo $?
0 ┌──(kalikali)-[~/Desktop]
└─$ [ -d demo.sh ]┌──(kalikali)-[~/Desktop]
└─$ echo $? 1 ⨯
1一条命令完成上述命令 必须保证两边都为真条件才会成立有一边为假条件都不会成立 ┌──(kalikali)-[~/Desktop]
└─$ [ -f /etc/passwd ] echo 该/etc/passwd是文件
该/etc/passwd是文件 # [ -f /etc/passwd ] 为真确实是文件
# 则执行后面的echo语句┌──(kalikali)-[~/Desktop]
└─$ [ $USERkali ] echo 该用户是kali用户
该用户是kali用户 || 两边有一个为真就为真两边都为真也为真 ┌──(kalikali)-[~/Desktop]
└─$ [ $USERkali ] || echo 该用户是kali用户 ! 表示取反 ┌──(kalikali)-[~/Desktop]
└─$ [ ! $USERkali ] || echo 该用户是kali用户
该用户是kali用户要求普通用户输出user,管理员用户输出superuser
[ ! $USER kali ] echo superuser || echo user整数的比较运算符
-eq 等于
-ne 不等于
-gt 大于
-lt 小于
-le 等于或小于
-ge 等于或大于┌──(kalikali)-[~/Desktop]
└─$ [ 9 -gt 9 ] ┌──(kalikali)-[~/Desktop]
└─$ echo $?
1 字符串的比较运算 比较字符串内容是否相同
! 比较字符串内容是否为空
-z 判断字符串内容是否为空┌──(kalikali)-[~/Desktop]
└─$ [ $LANG en_US.UTF-8 ] echo 支持英文 || echo 支持中文
支持英文 shell脚本流程控制
if 条件
then 命令
else 命令
fiif…
#!/bin/bash
DIR/home/kali/Desktop/demo
if [ ! -e $DIR]
then mkdir -p $DIR
fiif…else…
#!/bin/bash
ping -c 3 -i 0.2 -w 3 1 $/dev/nullif [ $? -eq 0 ]
then echo 该$1是正常的
elseecho 该$1是不正常的
fiif…else…嵌套
ping -c -i 0.2 -w 3 $1 /dev/nullif [ $? -eq 0 ]then echo 该$1是正常的elseecho 该$1是不正常的fiif…else…多级嵌套
#!/bin/ash
if [ -z $1 ]
then echo 作者zsecho 该命令是检测服务器IP是否正常echo 直接在命令后面加参数IP就可以执行
elseping -c 3 -i 0.2 -w 3 $1 /dev/nullif [ $? -eq 0 ]then echo 该$1是正常的elseecho 该$1是不正常的fifiif…elif…else
read -p 请输入分数 [1--100] score
if [ $score -ge 85 ] [ $score -le 100 ] ;thenecho 优秀
elif [ $score -ge 70 ] [ $score -le 84 ] ;thenecho 合格
elseecho 不合格
fi shell脚本循环
for循环
for 变量名 in 取值列表
do命令序列
done批量添加用户 #!/bin/bash
#循环语句
read -p 请输入密码: PASSWORDfor USERNAME in cat user.txt
doid $USERNAME /dev/nullif [ $? -eq 0 ]then echo 该用户$USERNAME 已经存在elseuseradd $USERNAME /dev/nullecho $PASSWORD| passwd --stdin $USERNAME /dev/nullecho 该用户$USERNAME添加成功fi
done批量ping IP地址 #!/bin/bash
#批量pingIP地址
HOSTLIST$(cat /home/kali/Desktop/iplist.txt)
for IP in $HOSTLIST
do ping -c 3 -i 0.2 -w 3 $IP /dev/nullif [ $? -eq 0 ]thenecho 该IP$IP是正常的elseecho 该IP: $IP是ping不通的fi
done检测同一局域网多台主机存活情况
#!/bin/bash
read -p 请输入网络位 NETWORKfor ip in $(seq 100 254) #seq用于生成数字100~254
doping -c 3 -i 0.2 -w 3 $NETWORK.$ip /dev/null result0 || result1if [ $result -eq 0 ];thenecho IP地址: $NETWORK.$ip is up !!echo $NETWORK.$ip /tmp/up.txtelseecho IP地址: $NETWORK.$ip is down !!echo $NETWORK.$ip /tmp/down.txtfi
done检测同一局域网多台主机存活情况
#!/bin/bash
read -p 请输入网络位 NETWORKfor ip in $(seq 100 254) #seq用于生成数字100~254
doping -c 3 -i 0.2 -w 3 $NETWORK.$ip /dev/null result0 || result1if [ $result -eq 0 ];thenecho IP地址: $NETWORK.$ip is up !!echo $NETWORK.$ip /tmp/up.txtelseecho IP地址: $NETWORK.$ip is down !!echo $NETWORK.$ip /tmp/down.txtfi
done多线程检测主机存活情况
echo输入带颜色的内容相关博客
#!/bin/bash
read -p 请输入IP网络位: ip
for i in $(seq 1 254) #seq用于生成数字1~254do{ ping $ip.$i -c1 -s1 21 1/dev/null echo -e ping $ip.$i 是 \033[32m通的\033[0m || echo -e ping $ip.$i 是 \033[31m不通的\033[0m } #注意在shell中不支持多线程的.这里是采用多进程执行方式,{}里执行了,不管结束没结束继续执行下一条.done
wait #{}执行完,执行下一条,相当于高级语言多线程同步作用.
echo 扫描检测已结束。while循环
while 条件
do命令序列
done$RANDOM是linux中的内置变量可以随机生成0-32767之间的整数数字 #!/bin/bash
TIMES0
echo 该商品的价格为0--999之间来猜一猜
PRICE$(expr $RANDOM % 1000 )
while true
doread -p 请输入价格 INTlet TIMES #自增if [ $INT -eq $PRICE ];thenecho 恭喜你猜对了价格为$PRICEecho 猜了$TIMES次exitelif [ $INT -gt $PRICE ];thenecho 猜高了elseecho 太低了fi
donecase选择语句
case 变量值 in
模式1命令序列1
模式2 命令序列2
....默认命令序列
esac#!/bin/bash
read -p 请输入一个字符 KEY
case $KEY in[a-z]|[A-Z])echo 这是字母;;[0-9])echo 这是数字;;*)echo 这是特殊符号
esac