三.批量创建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