首页 > 代码库 > Shell必会30道题
Shell必会30道题
1、批量生成随机字符文件名
使用for 循环在/oldboy目录下批量创建10个html文件,其中每个文件需要包含10个随机小写字母加固定字符串oldboy,名称示例如下:
[root@shiyanji ~]# ls /oldboy/
aebecfecbd_oldboy.html baaaafbcda_oldboy.html ccdeadaebe_oldboy.html ceefcaaffc_oldboy.html deacbedcdb_oldboy.html
afcbdeeafc_oldboy.html bbbceadeef_oldboy.html cdedcfadec_oldboy.html dcdbedaace_oldboy.html ecfebeaaaf_oldboy.html
解答:
[root@web01 oldboy]# vim /server/scripts/ti1.sh
#!/bin/bash Path=/oldboy [ -d "$Path" ] ||mkdir -p $Path for i in `seq 10` do random=$(echo $RANDOM|sha512sum|sed ‘s#[^a-z]##g‘|cut -c 1-10) touch $Path/${random}_oldboy.html done
2、批量改名
将上题中的oldboy字符串全部改成oldgirl(最好用for循环实现),并且将扩展名html全部改成大写。
解答:
[root@web01 oldboy]# vim /server/scripts/ti2.sh #!/bin/bash Filename=oldgirl.HTML Dirname="/oldboy" cd $Dirname for i in `ls` do name=$(echo ${i}|awk -F ‘_‘ ‘{print $1}‘) mv $i ${name}_${Filename} done
3、批量创建特殊要求用户
批量创建10个系统账号oldboy01-oldboy10并设置密码(密码为随机数,要求是字符和数字等的混合)。
不使用for循环做法
seq -w 10|sed ‘s#.*#useradd oldboy&;a=`echo $RANDOM|sha512sum|cut -c 1-10`;echo $a|passwd --stdin oldboy&;echo oldboy& $a >>/tmp/mima#ge‘
说明:
e 等于bash
-w 平衡宽度用前导零填充
使用for循环脚本
[root@web01 scripts]# vim ti3.sh #!/bin/bash Mima=`echo $RANDOM|sha512sum|cut -c 1-10` for i in oldboy{1..10} do useradd $i;echo ${Mima}|passwd --stdin $i touch /tmp/new echo $i ${Mima} >>/tmp/new done
4、扫描网络内存活主机
写一个Shell脚本,判断10.0.0.0/24网络里,当前在线的IP有哪些?
解答:
#!/bin/bash for i in 10.0.0.{1..254} do { ping -w 2 -c 2 $i &> /dev/null if [ $? -eq 0 ];then echo "$i is ok" fi }& done
说明:
ping
-c count次数
-w 延期时间
. /etc/init.d/functions 调用这个库
action $i /bin/true 固定格式(把$i以这个库的true格式显示)
action $i /bin/false 固定格式(把$i以这个库的false格式显示)
& Shell的并发检测功能,批量ping,快速返回结果
Shell必会30道题
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。