shell 是一个利用法式,它毗连了用户和 Linux 内核,让用户可以加倍高效、平安、低本钱天时用 Linux 内核,这就是 Shell 的本质。 shell剧本就是由Shell号令组成的履行文件,将一些号令整合到一个文件中,停止处置营业逻辑,剧本不用编译即可运转。它经过诠释器诠释运转,所以速度相对来说比力慢。 shell剧本中最重要的就是对shell号令的利用与组合,再利用shell剧本支持的一些说话特征,完成想要的功用。 明天给大师分享《shell剧本100例》,包括了90%的shell剧本常识点,想要进修、提升、口试的同学一定要进修下,篇幅有限,写不完全数的内容,已经把文章整理成pdf,方便大师查阅和进修。【需要的看文末】 配合视频进修结果更佳! 1. 编写 helloworld 剧本 #!/bin/bashecho "hello world" 2. 经过位置变量建立 Linux 系统账户及密码 #!/bin/bash#$1 是履行剧本的第一个参数,$2 是履行剧本的第二个参数 useradd "$1" echo "$2" | passwd ‐‐stdin "$2" 3. 每周 5 利用 tar 号令备份/var/log 下的一切日志文件 #vim /root/logbak.sh#编写备份剧本,备份后的文件名包括日期标签,避免前面的备份将前面的备份数据覆盖 #留意 date 号令需要利用反引号括起来,反引号在键盘<tab>键上面 tar -czf log-`date +%Y%m%d`.tar.gz /var/log # crontab ‐e #编写计划使命,履行备份剧本 00 03 * * 5 /root/logbak.sh 4. 一键摆设 LNMP(RPM 包版本) #!/bin/bash#利用 yum 安装摆设 LNMP,需要提早设置好 yum 源,否则该剧本会失利 #本剧本利用于 centos7.2 或 RHEL7.2 yum ‐y install httpd yum ‐y install mariadb mariadb‐devel mariadb‐server yum ‐y install php php‐mysql systemctl start httpd mariadb systemctl enable httpd mariadb 5. 实时监控本机内存和硬盘残剩空间,残剩内存小于 500M、根分区残剩空间小于 1000M 时,发送报警邮件给 root 治理员 #!/bin/bash#提取根分区残剩空间 disk_size=$(df / |awk '/\//{print $4}') #提取内存残剩空间 mem_size=$(free |awk '/Mem/{print $4}') while : do #留意内存和磁盘提取的空间巨细都是以 Kb 为单元 if [ $disk_size ‐le 512000 ‐a $mem_size ‐le 1024000 ];then mail ‐s Warning root <<EOF Insufficient resources,资本不敷 EOF fi done 6. 剧本天生一个 100 之内的随机数,提醒用户猜数字,按照用户的输入,提醒用户猜对了, 猜小了或猜大了,直至用户猜对剧本竣事。 #!/bin/bash#RANDOM 为系统自带的系统变量,值为 0‐32767 的随机数 #利用取余算法将随机数变成 1‐100 的随机数 num=$[RANDOM%100+1] #利用 read 提醒用户猜数字 #利用 if 判定用户猜数字的巨细关系:‐eq(即是),‐ne(不即是),‐gt(大于),‐ge(大于即是),‐lt(小于),‐le(小 于即是) while : do read ‐p "计较机天生了一个 1‐100 的随机数,你猜: " cai if [ $cai ‐eq $num ];then echo "恭喜,猜对了" exit elif [ $cai ‐gt $num ];then echo "Oops,猜大了" else echo "Oops,猜小了" fi 7. 检测本机当前用户能否为超级治理员,假如是治理员,则利用 yum 安装 vsftpd,假如不 是,则提醒您非治理员(利用字串对照版本) #!/bin/bashif [ $USER == "root" ];then yum ‐y install vsftpd else echo "您不是治理员,没有权限安装软件" fi 8. 检测本机当前用户能否为超级治理员,假如是治理员,则利用 yum 安装 vsftpd,假如不 是,则提醒您非治理员(利用 UID 数字对照版本) #!/bin/bashif [ $UID ‐eq 0 ];then yum ‐y install vsftpd else echo "您不是治理员,没有权限安装软件" fi 9. 编写剧本:提醒用户输入用户名和密码,剧本自动建立响应的账户及设置密码。假如用户 不输入账户名,则提醒必须输入账户名并退出剧本;假如用户不输入密码,则同一利用默 认的 123456 作为默许密码。 #!/bin/bashread ‐p "请输入用户名: " user #利用‐z 可以判定一个变量能否为空,假如为空,提醒用户必须输入账户名,并退出剧本,退出码为 2 #没有输入用户名剧本退出后,利用$?检察的返回码为 2 if [ ‐z $user ];then echo "您不需输入账户名" exit 2 fi #利用 stty ‐echo 封闭 shell 的回显功用 #利用 stty echo 翻开 shell 的回显功用 stty ‐echo read ‐p "请输入密码: " pass stty echo pass=${pass:‐123456} useradd "$user" echo "$pass" | passwd ‐‐stdin "$user" 10. 依次提醒用户输入 3 个整数,剧本按照数字巨细依次排序输出 3 个数字 #!/bin/bashread ‐p "请输入一个整数:" num1 read ‐p "请输入一个整数:" num2 read ‐p "请输入一个整数:" num3 #不管谁大谁小,最初都打印 echo "$num1,$num2,$num3" #num1 中永久存最小的值,num2 中永久存中心值,num3 永久存最大值 #假如输入的不是这样的顺序,则改变数的存储顺序,如:可以将 num1 和 num2 的值对换 tmp=0 #假如 num1 大于 num2,就把 num1 和和 num2 的值对换,确保 num1 变量中存的是最小值 if [ $num1 ‐gt $num2 ];then tmp=$num1 num1=$num2 num2=$tmp fi #假如 num1 大于 num3,就把 num1 和 num3 对换,确保 num1 变量中存的是最小值 if [ $num1 ‐gt $num3 ];then tmp=$num1 num1=$num3 num3=$tmp fi #假如 num2 大于 num3,就把 num2 和 num3 对标,确保 num2 变量中存的是小一点的值 if [ $num2 ‐gt $num3 ];then tmp=$num2 num2=$num3 num3=$tmp fi echo "排序后数据为:$num1,$num2,$num3" 11. 编写剧本,实现人机<石头,铰剪,布>游戏 #!/bin/bashgame=(石头 铰剪 布) num=$[RANDOM%3] computer=${game[$num]} #经过随机数获得计较机的出拳 #出拳的能够性保存在一个数组中,game[0],game[1],game[2]别离是 3 平分歧的能够 echo "请按照以下提醒挑选您的出拳手势" echo "1.石头" echo "2.铰剪" echo "3.布" read ‐p "请挑选 1‐3:" person case $person in 1) if [ $num ‐eq 0 ];then echo "平手" elif [ $num ‐eq 1 ];then echo "你赢" else echo "计较机赢" fi;; 2) if [ $num ‐eq 0 ];then echo "计较机赢" elif [ $num ‐eq 1 ];then echo "平手" else echo "你赢" fi;; 3) if [ $num ‐eq 0 ];then echo "你赢" elif [ $num ‐eq 1 ];then echo "计较机赢" else echo "平手" fi;; *) echo "必须输入 1‐3 的数字" esac 12. 编写剧本测试 192.168.4.0/24 全部网段中哪些主机处于开机状态,哪些主机处于关机 状态(for 版本) #!/bin/bashfor i in {1..254} do ping ‐c2 ‐i0.3 ‐W1 192.168.4.$i &>/dev/null if [ $? –eq 0 ];then echo "192.168.4.$i is up" else echo "192.168.4.$i is down" fi done 13. 编写剧本测试 192.168.4.0/24 全部网段中哪些主机处于开机状态,哪些主机处于关机 状态(while 版本) #!/bin/bashi=1 while [ $i ‐le 254 ] do ping ‐c2 ‐i0.3 ‐W1 192.168.4.$i &>/dev/null if [ $? –eq 0 ];then echo "192.168.4.$i is up" else echo "192.168.4.$i is down" fi let i++ done 14. 编写剧本测试 192.168.4.0/24 全部网段中哪些主机处于开机状态,哪些主机处于关机 状态(多进程版) #!/bin/bash#界说一个函数,ping 某一台主机,并检测主机的存活状态 myping(){ ping ‐c2 ‐i0.3 ‐W1 $1 &>/dev/null if [ $? ‐eq 0 ];then echo "$1 is up" else echo "$1 is down" fi } for i in {1..254} do myping 192.168.4.$i & done #利用&标记,将履行的函数放入背景履行 #这样做的益处是不需要期待 ping 第一台主机的回应,便可以继续并发 ping 第二台主机,依次类推。 15. 编写剧本,显现进度条 #!/bin/bashjindu(){ while : do echo ‐n '#' sleep 0.2 done } jindu & cp ‐a $1 $2 killall $! echo "拷贝完成'' 这100个shell剧本案例,你都晓得吗?一篇教会你写90%的shell剧本2022-07-06 19:00·高薪实战爱好者 shell 是一个利用法式,它毗连了用户和 Linux 内核,让用户可以加倍高效、平安、低本钱天时用 Linux 内核,这就是 Shell 的本质。 shell剧本就是由Shell号令组成的履行文件,将一些号令整合到一个文件中,停止处置营业逻辑,剧本不用编译即可运转。它经过诠释器诠释运转,所以速度相对来说比力慢。 shell剧本中最重要的就是对shell号令的利用与组合,再利用shell剧本支持的一些说话特征,完成想要的功用。 明天给大师分享《shell剧本100例》,包括了90%的shell剧本常识点,想要进修、提升、口试的同学一定要进修下,篇幅有限,写不完全数的内容,已经把文章整理成pdf,方便大师查阅和进修。 【完整版支付方式在文末!!】 【完整版支付方式在文末!!】 文档内容1. 编写 helloworld 剧本 #!/bin/bashecho "hello world" 2. 经过位置变量建立 Linux 系统账户及密码 #!/bin/bash#$1 是履行剧本的第一个参数,$2 是履行剧本的第二个参数 useradd "$1" echo "$2" | passwd ‐‐stdin "$2" 3. 每周 5 利用 tar 号令备份/var/log 下的一切日志文件 #vim /root/logbak.sh#编写备份剧本,备份后的文件名包括日期标签,避免前面的备份将前面的备份数据覆盖 #留意 date 号令需要利用反引号括起来,反引号在键盘<tab>键上面 tar -czf log-`date +%Y%m%d`.tar.gz /var/log # crontab ‐e #编写计划使命,履行备份剧本 00 03 * * 5 /root/logbak.sh 4. 一键摆设 LNMP(RPM 包版本) #!/bin/bash#利用 yum 安装摆设 LNMP,需要提早设置好 yum 源,否则该剧本会失利 #本剧本利用于 centos7.2 或 RHEL7.2 yum ‐y install httpd yum ‐y install mariadb mariadb‐devel mariadb‐server yum ‐y install php php‐mysql systemctl start httpd mariadb systemctl enable httpd mariadb 5. 实时监控本机内存和硬盘残剩空间,残剩内存小于 500M、根分区残剩空间小于 1000M 时,发送报警邮件给 root 治理员 #!/bin/bash#提取根分区残剩空间 disk_size=$(df / |awk '/\//{print $4}') #提取内存残剩空间 mem_size=$(free |awk '/Mem/{print $4}') while : do #留意内存和磁盘提取的空间巨细都是以 Kb 为单元 if [ $disk_size ‐le 512000 ‐a $mem_size ‐le 1024000 ];then mail ‐s Warning root <<EOF Insufficient resources,资本不敷 EOF fi done 6. 剧本天生一个 100 之内的随机数,提醒用户猜数字,按照用户的输入,提醒用户猜对了, 猜小了或猜大了,直至用户猜对剧本竣事。 #!/bin/bash#RANDOM 为系统自带的系统变量,值为 0‐32767 的随机数 #利用取余算法将随机数变成 1‐100 的随机数 num=$[RANDOM%100+1] #利用 read 提醒用户猜数字 #利用 if 判定用户猜数字的巨细关系:‐eq(即是),‐ne(不即是),‐gt(大于),‐ge(大于即是),‐lt(小于),‐le(小 于即是) while : do read ‐p "计较机天生了一个 1‐100 的随机数,你猜: " cai if [ $cai ‐eq $num ];then echo "恭喜,猜对了" exit elif [ $cai ‐gt $num ];then echo "Oops,猜大了" else echo "Oops,猜小了" fi done 7. 检测本机当前用户能否为超级治理员,假如是治理员,则利用 yum 安装 vsftpd,假如不 是,则提醒您非治理员(利用字串对照版本) #!/bin/bashif [ $USER == "root" ];then yum ‐y install vsftpd else echo "您不是治理员,没有权限安装软件" fi 8. 检测本机当前用户能否为超级治理员,假如是治理员,则利用 yum 安装 vsftpd,假如不 是,则提醒您非治理员(利用 UID 数字对照版本) #!/bin/bashif [ $UID ‐eq 0 ];then yum ‐y install vsftpd else echo "您不是治理员,没有权限安装软件" fi 9. 编写剧本:提醒用户输入用户名和密码,剧本自动建立响应的账户及设置密码。假如用户 不输入账户名,则提醒必须输入账户名并退出剧本;假如用户不输入密码,则同一利用默 认的 123456 作为默许密码。 #!/bin/bashread ‐p "请输入用户名: " user #利用‐z 可以判定一个变量能否为空,假如为空,提醒用户必须输入账户名,并退出剧本,退出码为 2 #没有输入用户名剧本退出后,利用$?检察的返回码为 2 if [ ‐z $user ];then echo "您不需输入账户名" exit 2 fi #利用 stty ‐echo 封闭 shell 的回显功用 #利用 stty echo 翻开 shell 的回显功用 stty ‐echo read ‐p "请输入密码: " pass stty echo pass=${pass:‐123456} useradd "$user" echo "$pass" | passwd ‐‐stdin "$user" 10. 依次提醒用户输入 3 个整数,剧本按照数字巨细依次排序输出 3 个数字 #!/bin/bashread ‐p "请输入一个整数:" num1 read ‐p "请输入一个整数:" num2 read ‐p "请输入一个整数:" num3 #不管谁大谁小,最初都打印 echo "$num1,$num2,$num3" #num1 中永久存最小的值,num2 中永久存中心值,num3 永久存最大值 #假如输入的不是这样的顺序,则改变数的存储顺序,如:可以将 num1 和 num2 的值对换 tmp=0 #假如 num1 大于 num2,就把 num1 和和 num2 的值对换,确保 num1 变量中存的是最小值 if [ $num1 ‐gt $num2 ];then tmp=$num1 num1=$num2 num2=$tmp fi #假如 num1 大于 num3,就把 num1 和 num3 对换,确保 num1 变量中存的是最小值 if [ $num1 ‐gt $num3 ];then tmp=$num1 num1=$num3 num3=$tmp fi #假如 num2 大于 num3,就把 num2 和 num3 对标,确保 num2 变量中存的是小一点的值 if [ $num2 ‐gt $num3 ];then tmp=$num2 num2=$num3 num3=$tmp fi echo "排序后数据为:$num1,$num2,$num3" 11. 编写剧本,实现人机<石头,铰剪,布>游戏 #!/bin/bashgame=(石头 铰剪 布) num=$[RANDOM%3] computer=${game[$num]} #经过随机数获得计较机的出拳 #出拳的能够性保存在一个数组中,game[0],game[1],game[2]别离是 3 平分歧的能够 echo "请按照以下提醒挑选您的出拳手势" echo "1.石头" echo "2.铰剪" echo "3.布" read ‐p "请挑选 1‐3:" person case $person in 1) if [ $num ‐eq 0 ];then echo "平手" elif [ $num ‐eq 1 ];then echo "你赢" else echo "计较机赢" fi;; 2) if [ $num ‐eq 0 ];then echo "计较机赢" elif [ $num ‐eq 1 ];then echo "平手" else echo "你赢" fi;; 3) if [ $num ‐eq 0 ];then echo "你赢" elif [ $num ‐eq 1 ];then echo "计较机赢" else echo "平手" fi;; *) echo "必须输入 1‐3 的数字" esac 12. 编写剧本测试 192.168.4.0/24 全部网段中哪些主机处于开机状态,哪些主机处于关机 状态(for 版本) #!/bin/bashfor i in {1..254} do ping ‐c2 ‐i0.3 ‐W1 192.168.4.$i &>/dev/null if [ $? –eq 0 ];then echo "192.168.4.$i is up" else echo "192.168.4.$i is down" fi done 13. 编写剧本测试 192.168.4.0/24 全部网段中哪些主机处于开机状态,哪些主机处于关机 状态(while 版本) #!/bin/bashi=1 while [ $i ‐le 254 ] do ping ‐c2 ‐i0.3 ‐W1 192.168.4.$i &>/dev/null if [ $? –eq 0 ];then echo "192.168.4.$i is up" else echo "192.168.4.$i is down" fi let i++ done 14. 编写剧本测试 192.168.4.0/24 全部网段中哪些主机处于开机状态,哪些主机处于关机 状态(多进程版) #!/bin/bash#界说一个函数,ping 某一台主机,并检测主机的存活状态 myping(){ ping ‐c2 ‐i0.3 ‐W1 $1 &>/dev/null if [ $? ‐eq 0 ];then echo "$1 is up" else echo "$1 is down" fi } for i in {1..254} do myping 192.168.4.$i & done #利用&标记,将履行的函数放入背景履行 #这样做的益处是不需要期待 ping 第一台主机的回应,便可以继续并发 ping 第二台主机,依次类推。 15. 编写剧本,显现进度条 #!/bin/bashjindu(){ while : do echo ‐n '#' sleep 0.2 done } jindu & cp ‐a $1 $2 killall $! echo "拷贝完成'' 16. 进度条,静态时针版本 #!/bin/bash#界说一个显现进度的函数,屏幕快速显现| / ‐ \ rotate_line(){ INTERVAL=0.1 #设备间隔时候 COUNT="0" #设备 4 个外形的编号,默许编号为 0(不代表任何图像) while : do COUNT=`expr $COUNT + 1` #履行循环,COUNT 每次循环加 1,(别离代表 4 平分歧的外形) case $COUNT in #判定 COUNT 的值,值纷歧样显现的外形就纷歧样 "1") #值为 1 显现‐ echo ‐e '‐'"\b\c" sleep $INTERVAL ;; "2") #值为 2 显现\\,第一个\是转义 echo ‐e '\\'"\b\c" sleep $INTERVAL ;; "3") #值为 3 显现| echo ‐e "|\b\c" sleep $INTERVAL ;; "4") #值为 4 显现/ echo ‐e "/\b\c" sleep $INTERVAL ;; *) #值为其他时,将 COUNT 重置为 0 COUNT="0";; esac done } rotate_line 17. 9*9 乘法表(编写 shell 剧本,打印 9*9 乘法表) #!/bin/bashfor i in `seq 9` do for j in `seq $i` do echo ‐n "$i*$j=$[i*j] " done echo done 18. 利用死循环实时显现 eth0 网卡发送的数据包流量 #!/bin/bashwhile : do echo '当地网卡 eth0 流量信息以下: ' ifconfig eth0 | grep "RX pack" | awk '{print $5}' ifconfig eth0 | grep "TX pack" | awk '{print $5}' sleep 1 done 19. 利用 user.txt 文件中的职员名单,在计较机中自动建立对应的账户并设置初始密码 #!/bin/bash#本剧本履行,需要提早预备一个 user.txt 文件,该文件中包括有多少用户名信息 for i in `cat user.txt` do useradd $i echo "123456" | passwd ‐‐stdin $i done 20. 编写批量点窜扩大名剧本,如批量将 txt 文件点窜成 doc 文件 #!/bin/bash#履行剧本时,需要给剧本增加位置参数 #剧本名 txt doc(可以将 txt 的扩大名点窜成 doc) #剧本名 doc jpg(可以将 doc 的扩大名点窜成 jpg) for i in "ls *.$1" do mv $i ${i%.*}.$2 done 21. 利用 expect 工具自动交互密码远程其他主机安装 httpd 软件 #!/bin/bash#删除~/.ssh/known_hosts 后,ssh 远程任何主机城市询问能否确认要毗连该主机 rm ‐rf ~/.ssh/known_hosts expect <<EOF spawn ssh 192.168.4.254 expect "yes/no" {send "yes\r"} #按照自己的现真相况将密码点窜成实在的密码字串 expect "password" {send "密码\r"} expect "#" {send "yum ‐y install httpd\r"} expect "#" {send "exit\r"} EOF 其他shell剧本案例23. 编写剧本快速克隆 KVM 虚拟机 24. 编写一个点名器剧本 25. 检察有几多远程的 IP 在毗连本机(非论是经过 ssh 还是 web 还是 ftp 都统计) 26. 对 100 之内的一切正整数相加求和(1+2+3+4…+100) 27. 统计 13:30 到 14:30 一切拜候 apache 办事器的请求有几多个 28. 统计 13:30 到 14:30 一切拜候本机 Aapche 办事器的远程 IP 地址是什么 29. 打印国际象棋棋盘 30. 统计每个远程 IP 拜候了本机 apache 几次? 51. 查找 Linux 系统中的僵尸进程 52. 提醒用户输入年份后测试判定能否为闰年 53. 天生随机密码(urandom 版本) 54. 天生随机密码(字串截取版本) 80. 显现本机 Linux 系统上一切开放的端口列表 81. 将 Linux 系统中 UID 大于即是 1000 的普通用户都删除 82. 利用剧本开启封闭虚拟机 83. 调剂虚拟机内存参数的 shell 剧本 84. 检察 KVM 虚拟机中的网卡信息(不需要进入启动或进入虚拟机) 85. 不登陆虚拟机,点窜虚拟机网卡 IP 地址 PDF文档展现这份 100个shell剧本文档内容实在太多,因文章篇幅限制没法全数展现,倘使有需要完整版的朋友可以Si 信我,答复“ 100个shell剧本 ”支付原版PDF! |
小编在之前就介绍过很多油猴里的神器插件,这里给大家总结几款经典中的经典。01Usersc
shell是外壳的意思,就是操作系统的外壳。我们可以通过shell命令来操作和控制操作系统
作者:厚昌学院特聘讲师,厚昌学院顾问团队核心成员,从事互联网行业从事互联网行业8
前言「油猴脚本」是一段脚本代码,通过它可以让浏览器实现各种各样的扩展功能,和浏览
shell 是一个应用程序,它连接了用户和 Linux 内核,让用户能够更加高效、安全、低成
关注扩展迷、喜欢折腾电脑的小伙伴们,应该都对各种各样的浏览器插件不陌生了。浏览器
Tampermonkey 是一款免费的浏览器扩展和最为流行的用户脚本管理器,它适用于 Chrome,
油猴脚本管理器的超详细下载安装使用教程——新手必看油猴可以帮你干什么:全网VIP视
参考文章和视频:将iPad作为Mac Mini主屏幕的实现方法视频:无屏自动启动随航 iPad作为M
在运营短视频时,你有没有遇到过这样的问题:1、拍了一半发现拍摄场景不行;2、拍摄过
我们先看一下这个脚本的下载效果。我是100M的宽带,这直接能飙到20MB/s,所以下载速度
写脚本?对于没有视频背景的朋友来说可能就会有疑问,脚本是什么?不应该是电影,电视
本内容来源于@什么值得买APP,观点仅代表作者本人 |作者:Stark-C大家好,我是Stark-
初次见面,大家好。相信熟悉浏览器的都知道,尤其是大名鼎鼎的Chrome浏览器,丰富的
从历史上看,shell一直是类Unix系统的原生命令行解释器。多年来,它已被证明是Unix的
有人说,网红行业的现状是江山代有才人出,各领风骚“好几天”。的确,即便是行业顶流
最近115调整了接口,导致115转存助手ui优化版3.8.1版本无法转存或获取SHA1。有大神在
根据第49次《中国互联网络发展状况统计报告》数据,截至2022年12月,我国网络视频(含
Shell脚本编程难,难于上青天!这话不假,尤其很多程序员新人,学了几个月Shell脚本写
在上期我们做了个形象的比喻,把短视频制作比喻成我们造房子,前面我们已经带领大家打
声明:本站内容由网友分享或转载自互联网公开发布的内容,如有侵权请反馈到邮箱 1415941@qq.com,我们会在3个工作日内删除,加急删除请添加站长微信:15314649589
Copyright @ 2022-2044 杭州共生网络 www.gongshengyun.cn Powered by Discuz!