批量添加用户
1 |
|
批量删除用户
1 |
|
判断系统中有没有指定用户
判断系统中有没有chen这个用户,如果没有就创建一个,并且设置密码
1 | vim user.sh |
猜价格游戏
1 |
|
求1-100内奇数的和
1 |
|
求整数和
编写一个我为sumint.sh的脚本,提示用户输入一个小于100的函数,并计算从1 到该数之间所有整数的和
1 | vim sumint.sh |
为用户编写登录欢迎脚本
为root用户编写登录欢迎脚本,择选当前主机中的进程数,已登录用户数,根文件系统的磁盘使用率。当从TTY终端登录时,显示……
1 | cd /usr/local/bin |
添加执行权限
1 | chmod +x welcome.sh |
添加登录自动执行
1 | vim /etc/profile |
编写start,stop,status脚本程序
编写start,stop,status三个脚本程序,用来启动,停业各种系统服务。例如,直接进行stop crond,start crond命令即可停止,启动crond服务
1 | cd /usr/local/bin |
添加执行权限
1 | chmod +x status |
测试
1 | start crond |
1 | vim stop |
添加执行权限
1 | chmod +x status |
测试
1 | stop crond |
1 | vim start |
添加执行权限
1 | chmod +x start |
测试
1 | start crond |
求任意两个数平方和
编写一个小脚本程序sumsquare.sh,用来计算两个整数的平方和。例如:当执行sumsquare.sh 3 4 命令时,输出结果为25,当执行sumsquare.sh 5 6 命令时,输出结果为61
1 | cd /usr/local/bin |
根据free命令的结果计算内存占用率
编写一个小脚本程序,memusage.sh根据free命令的结果计算内存占用率
方法一取两位小数部分
1 | cd /usr/local/bin |
测试
1 | source memusage.sh |
方法二不取小数
1 |
|
监控CPU,内存,根分区的磁盘占用率
编写名为sysmon.sh的Shell监控脚本。
监控内容包括CPU使用率,内存使用率,根分区的磁盘占用率。
百分比只需精确到个位,如:7% 12% 23%等。
出现以下任一情况时告警:磁盘占用率超过90%,CPU使用率超过80%,内在使用率超过90%。
告警邮件通过mail命令发送到monitor@benet.com。
结合crond服务,每半个小时执行一次监控脚本。
1 | cd /usr/local/bin |
添加执行权限
1 | chmod +x sysmon.sh |
添加到计划任务
1 | crond -e -u root |
判断当前系统的内核主,次版本
编写一个名为chkversion.sh的脚本,判断当前系统的内核主,次版本,若大于2.4则输出相应的版本信息;否则输出提示“内核版本太低,无法继续”
1 | vim chkversion.sh |
判断系统中sysstat软件包的安装情况
编写一个名为chkinstall.sh的脚本,判断系统中sysstat软件包的安装情况,如果已经安装则提示“已安装”,并输出sysstat的版本信息;否则输出提示“未安装,尝试自动安装”,并访问RHEL6光盘挂载点/media/cdrom 自动安装sysstat包
1 |
|
检测目标并记录MAC地址
编写getarp.sh脚本文件
通过arping命令发送ARP请求,根据反馈的结果记录MAC地址
将网段地址(如:19.168.4.)赋值给变量NADD,作为检测地址的前缀
使用while循环语句,重复检测目标并记录MAC地址,主机地址为1~254
1 | rpm -qf `which arping` |
检测一个主机是否开启匿名FTP服务
缩写scanhost.sh脚本
有很多方法可以检测一个主机是否开启匿名FTP服务,这里采取以wget下载工具访问FTP根目录的方式,若能够成功列表,则视为匿名FTP已开启,否则为关闭
通过awk命令过滤出/etc/ethers文件中的所有IP地址,赋值给变量TARGET
使用for循环语句,读取TARGET变量中的IP地址,重复探测FTP的开启请况
先生成IP地址表
1 | vim ip.sh |
再编写scanhost.sh脚本
1 | vim scanhost.sh |
向文件指定行写入字符
向/etc/resolv.conf文件第2行写入需要的字符
1 | sed -i "2i nameserver 10.0.11.15\nnameserver 10.0.21.86" /etc/resolv.conf |
向文件指定行尾写入字符
向config.xml文件中带有“yes”内容的行尾写入字符
1 | sed -i "/yes/ s/$/ABC/" config.xml |
在文件所有行首添加字符
1 | sed -i "s/^/ABC/" config.xml |
在文件所有行尾添加字符
1 | sed -i "s/$/ABC/" config.xml |
删除空行
1 | sed -i "/^$/d" config.xml |
取文件中带有关键字的下行内容
取文件中带getCheckerName关键字的下一行内容,使用awk赋值给多个value
1 | find ./ -type f |xargs grep "getCheckerName" -n | awk -F : '{print $1,($2 +1)}' | while read a b ; do sed -n $b\p $a | awk -F '"' '{print $2}';done |
根据文件名后缀来自动选择相应的解压选项
编写一个名为untar.sh的脚本程序,用来解压.tar.gz或tar.bz2格式的压缩包文件,要求采用case语句,根据文件名后缀来自动选择相应的解压选项
1 | vim untar.sh |
crontab计划任务
每隔3个月的1号清理半年前的日志文件
1 | 0 0 1 */3 * /usr/bin/find /work/admin/logs/apigateway/ -type f -mtime +180 -name api_general_log.*.log -exec rm -rf {} \; |
每天晚上23点清空flume日志
1 | 0 23 * * * /usr/bin/echo "" > /flume/sunflower/apache-flume-1.7.0-bin/logs/flume.log |
每隔8个小时重启filebeat服务
1 | 0 */8 * * * /usr/bin/supervisorctl -uuser -p123 restart filebeat |