Linux:shell脚本案例

三.批量创建100个用户,并且设置密码

#!/bin/bash
USER_LIST=$@
USER_FILE=./user.info
for USER  in $USER_LIST;do 
    if ! id $USER &>/dev/null;then
        PASS=$(echo $RANDOM |md5sum |cut -c 1-8)
        useradd $USER
        echo $PASS | passwd --stdin $USER &>/dev/null
        echo "$USER $PASS" >>$USER_FILE
        echo "$USER User create successful. "
    else
        echo "$USER already exist."
    fi
done

四:一键查看服务器利用率
(1)内存 (2)CPU (3)硬件  (4)TCP连接状态 

#!/bin/bash
function cpu(){
    util=$(vmstat |awk '{if(NR==3)printf $13+$14}')
    iowait=$(vmstat | awk '{if(NR==3)printf $16}')
    echo "CPU 使用率:${util}%,等待磁盘IO响应使用率:${iowait}%"
}
function memory(){
    total=$(free -m |awk '{if(NR==2)printf "%.1f",$2/1024}')
    used=$(free -m |awk '{if(NR==2)printf "%.1f",($2-$NF)/1024}')
    available=$(free -m |awk '{if(NR==2)printf "%.1f",$NF/1024}')
    echo "内存 总大小:${total}G,已使用:${used}G,剩余:${available}G"
}
disk(){
    fs=$(df -h |awk '/^\/dev/{print $1}')
    for p in $fs;do 
        mounted=$(df -h |awk -v p=$p '$1==p{print $NF }')
        size=$(df -h |awk -v p=$p '$1==p{print $2 }')
        used=$(df -h |awk -v p=$p '$1==p{print $3 }')
        user_percent=$(df -h |awk -v p=$p '$1==p{print $5 }')
        echo "硬盘 挂载点:$mounted ,总大小:$size,已使用:$used,使用率:$user_percent"
    done
}
tcp_status(){
    summary=$(netstat -antp |awk '{a[$6]++}END{for(i in a)printf i":"a[i]""}')
    echo "TCP连接状态:$summary"
}
disk
memory
cpu
tcp_status

五:找出占用CPU/内存过高的程序

#!/bin/bash
echo "------------cpu top 10--------------------"
ps -eo pid,pcpu,pmem,args --sort=-pcpu |head -n 10
echo "------------memory top 10--------------------"
ps -eo pid,pcpu,pmem,args --sort=-pmem |head -n 10


六.查看实时流量
#!/bin/bash
NIC=$1
echo -e "IN -------OUT"
while true;do   
    OLD_IN=$(awk '$0~"'$NIC'"{print $2}' /proc/net/dev)
    OLD_OUT=$(awk '$0~"'$NIC'"{print $10}' /proc/net/dev)
    sleep 1
    NEW_IN=$(awk '$0~"'$NIC'"{print $2}' /proc/net/dev)
    NEW_OUT=$(awk '$0~"'$NIC'"{print $10}' /proc/net/dev)
    IN=$(printf "%.1f%s""$((($NEW_IN-$OLD_IN)/1024))""kB/s")
    OUT=$(printf "%.1f%s""$((($NEW_OUT-$OLD_OUT)/1024))""kB/s")
    echo "$IN $OUT"
    sleep 1
done

七.查看当前网段的可用主机
#!/bin/bash
# 编写脚本测试整个网段中哪些主机处于开机状态,哪些主机处于关机
# availabel,invalid为保存路径
#!/bin/bash
date=$(date +%Y%m%d)
read -p "Please input your ip num: **.**.**:" lastname #提示输入ip的前三位
read -p "pleaswe input your name :" username  #提示输入名字
for i in {0..3}                     #网段从0~255
do
HOST=$lastname.$i           
ping -c 2 $HOST &>/dev/null   #ping  2 次 将全部结果丢进“黑洞“
if [ $? -eq 0 ];then                     #判断是否ping成功
	echo "$HOST is up" >> ./${username}availabel${date}.txt     #生成的文件格式为 username+availabel+时间
else 
	echo "$HOST is down" >> ./${username}invalid${date}.txt 	 #生成的文件格式为 username+invalid+时间	
fi
done

八.显示指定目录的指定文件格式
#!/bin/bash
#由用户输入一个目录名作为指定的目录
read -p "Please input your filename path" filenamepath #提示輸入指定的目錄名
read -p "Please input your want to find filename" filename #
#显示指定目录中
find $filenamepath |grep ${filename}$

九.服务器初始化
: '
服务器初始化
背景:
(1)设置时区并且同步时间
(2)禁止selinux
(3)清空防火墙
(4)历史命令显示操作时间
(5)禁止root远程登陆
(6)禁止定时任务发送邮件
(7)设置最大打开文件数
(8)减少swap使用
(9)系统内核参数优化
(10)安装系统性能分析工具和其他
'


# /bin/bash
# 设置时区并且同步时间 
ln -s /usr/share/zoneinfo/Shanghai /etc/localtime
if ! crontab -l |grep ntpdate &>/dev/null ;then 
    (echo "* 1 * * * ntpdate time.windows.com >dev/null 2>&1 ";crontab -l ) |crontab
fi 

#禁止selinux
sed -i '/SELINUX/{s/permissive/disable}' /etc/selinux/config

#关闭7.**和6.**防火墙 
if egrep "7.[0-9]"  /etc/redhat-release &>/dev/null;then
    systemctl stop firewalld
    systemctl disable firewalld
elif egrep "6.[0-9]"  /etc/redhat-release &>/dev/null;then
    systemctl iptables stop
    systemctl iptables off
fi

#历史命令显示操作时间
if !grep HISTTIMEFORMAT /etc/bashrc;then    
    echo 'export HISTTIMEFORMAT="%F %T `whoami`"'>>etc/bashrc


#ssh超时时间
if ! grep "TIMEOUT=600" /etc/profile &>/dev/null;then
    echo"export TIMEOUT=600" >>/etc/profile
fi

#禁止root远程登录
# sed -i 's/#PermitRootLogin yes/PermitRootLogin no/'  /etc/ssh/sshd_config 

#禁止定时任务发送邮件
sed -i 's/MAILTO=root/MAILTO=""' /etc/crontab

#设置最大打开文件数
if !grep "* soft nofile 65535 " /etc/security/limit.conf &>/dev/null;;then
cat >>/etc/security/limit.conf <<EOF
    * soft nofile 65535
    * hard nofile 65535
EOF
fi

#系统内核优化
cat >>/etc/sysctl.conf <<EOF
net.ipv4.tcp_max_tw_buckets = 20480
net.ipv4.tcp_syncookies= 1
net.ipv4.tcp_syn_backlog = 20480
net.core.netdev_max_backlog=262144
net.ipv4.tcp_fin_timeout=20
EOF

#减少swap使用
echo "0">/proc/sys/vm/swappiness 

#安装系统性能分析工具和其他
yum install gcc make autoconf vim sysstat net-tools iostat iftop iotp lrzsz -y 

10.利用until计算累加和,终值自己输入

#!/bin/bash
read -p "请输入累加的终值n:" n #提示累加的终值n
declare -i sum=0  #声明变量
until ((i>$n))
do
  let sum+=i
  let ++i
done
echo $sum
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值