特殊符号:
{} 集合
${}变量引用
#ping ip
ip=10.10.19.10
i=1
while [ $i -le 5 ]
do
ping -c1 $ip &>dev/null
if [ $? -eq 0 ];then
echo "$ip is up.."
fi
let i=i+1
done
# 判断用户输入的是否是数字
read -p "请输入一个数字:" num
if [[ ! "$num"=~^[0-9]+$ ]];then
echo "你输入的不是数字,程序退出!!!"
exit
fi
#判断用户输入的是否是数字
read -p "请输入一个数字:"num
while true
do
if [[ $sum=~^[0-9]+$ ]];then
break
else
read -p "不是数字,请重新输入数值:"num
fi
done
echo “你输入的数字是:$num”
#输入后缀名
read -p "Place input prefix: " prefix
while true
do
if [ -n "$prefix" ];then
break
else
read -p "Place input prefix:" prefix
fi
done
for i in `seq $num`
#根据时间创建文件
touch $(date + %F)_file.txt
back_dir=/var/mysql_back
if ! test -d $back_dir;then
mkdir -p $back_dir
fi
if [ ! -d $back_dir ];then
mkdir -p $back_dir
fi
if [ $UID -ne 0 ];then #eq
echo "没有权限!"
fi
if [ $USER = "root" ];then
echo "你没有权限!"
exit
fi
cp -rf test_yum.sh /home/alice/
[-d /home ]; echo $?
# 是连接文件
[ -L /etc/rc.locl ];echo $?
#不是目录就创建
[ ! -d /ccc ] && mkdir /ccc
#是一个目录就不创建
[ -d /ccc ] || mkdir /ccc
#判断用户是否存在
read -p "Please ipunt a username:" user
#if id $user &>/dev/null; then
id $user &>/dev/null; then
if [ $? -eq 0 ]; then
echo "user $user already exists"
else
useradd $user
if [ $? -eq 0 ];then
echo "$user is created."
fi
fi
#磁盘使用
disk_use=`df -Th | grep '/$' | awk '{print $(NF-1)}' | awk -F “%” ‘{print $1}’`
mail_user=alice
if [ $disk_usr -ge 90 ];then
echo "`date +%F-H%` disk: ${disk_use}%" |mail -s "disk war..." $mail_user
fi
#当前内存使用百分比
mem_used=`free -m |grep '^Mem:' |awk '{print $3}'`
mem_total=`free -m |grep '^Mem:' |awk '{print $2}'`
mem_percent=$((mem_used*100/men_total))
war_file=/tmp/mem_war.txt
rm -rf $war_file
#if [ $mem_percent>80 ];then
if (($mem_percent>80));then
echo "`date +%F-%H` memory:${mem_percent}%" > $war_file
fi
if [ -f $war_file ];then
mail -s "mem war..." alias <$war_file
rm -rf $war_file
fi
echo "当前内存使用百分比:$mem_percent "
#测试字符串长度
[ -z $var ]; echo $?
#添加用户
read -p "Place input number:" num
if [[ ! "$num" =~ ^[0-9]+$ || "$num" =~ ^0+$ ]];then
echo "error number!"
exit
fi
read -p "Place input prefix: " prefix
if [ -z "$prefix" ];then
echo "error prefix"
exit
fi
for i in `seq $num`
do
user=$prefix$i
useradd $user
echo "123" |passwd --stdin $user &>/dev/null
if [ $? -eq 0 ];then
echo "$user is created."
fi
done
删除用户:
red -p "Place input a username: " user
id $user &>/dev/null
if [ $? -ne 0 ];then
echo "no such user: $user"
exit 1
fi
read -p "Are you sure?[y/n]: " action
if [ "$action" !="y" ];then
echo "good!"
exit
fi
不同用户登录:
trap "" HUP INT OUIT TSTP
web1=192.168.122.241
web2=192.168.122.53
mysql1=192.168.122.210
clear
while :
do
cat <<-EOF
1.web1
2.web2
3.mysql1
EOF
red -p "input number: " num
case "$num" in
1)
ssh root@$web1
;;
2)
ssh root@$web2
;;
3)
ssh root@$mysql1
;;
"")
;;
*)
echo "error"
esac
done
简单的系统工具箱:
menu(){
cat <<-EOF
h.help
f.disk partition
d.filesystem mount
m.memory
u.system load
q.exit
EOF
}
menu
# until false
while :
do
read -p "Please input[h for help]: " action
case "$action" in
h)
clear
menu
;;
f)
fdisk -l
;;
d)
df -Th
;;
m)
free -m
;;
u)
uptime
;;
q)
#exit
break
;;
"")
;;
*)
echo "error"
esac
done
echo "finish..."
#查看网关
ip r
#删除网关
ip r del
gateway=192.168.122.1
ping -c1 www.baidu.com &>dev/null
if [ $? -eq 0 ];then
yum -y install httpd
systemctl start httpd
systemctl enable httpd
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=httpds
firewall-cmd --reload
sed -ri '/^SELINUX=/cSELINUX=disabled' /etc/selinux/config
setenforce 0
# echo "connet:unreachable"
# exit
curl http://127.0.0.1 &>/dev/null
if [ $? -eq 0 ];then
echo "Apache ok..."
fi
elif ping -c1 $gateway &>/dev/null;then
echo "check dns..."
else
echo "check ip address"
fi
cat /etc/resolv.conf
grep 'nameserver' /etc/resolv.conf
ping 多个 ip
ip.txt
for i in {2..254}
do
{
ip =192.168.40.$i
ping -c1 -W1 $ip &>/dev/null
if [ $? -eq 0 ];then
echo "$ip " |tee -a ip.txt
fi
}&
done
wait
echo "finishi..."
批量创建用户
#判断脚本是否有参数
if [ $# -eq 0];then
echo "usage: `basename $0` file"
exit 1
fi
#判断是否是文件
if [ ! -f $1 ];then
echo "error file"
exit 2
fi
IFS=$'\n'
for line in `cat $1`
do
if [ ${#line} -eq 0 ];then
continue
fi
user=`echo "$line" |awk '{print $1}'`
pass=`echo "$line" |awk '{print $2}'`
id $user &>/dev/null
if [ $? -eq 0 ];then
echo "user $user already exists"
else
useradd $user
echo "$pass" |passwd --stdin $user &>/dev/null
if [ $? -eq 0 ];then
echo "$user is created."
fi
fi
done
read -p "Place enter a New Password:"pass
for ip in $(cat ip.txt)
do
{
ping -c1 -W1 $ip &>/dev/null
if [ $? -eq 0 ];then
ssh $ip "echo $pass |passwd --stdin root"
if [ $? -eq 0 ];then
echo "$ip" >>ok_`date +%F`.txt
else
echo "$ip" >>fail_`date +%F`.txt
fi
else
echo "$ip" >>fail_`date +F%`.txt
fi
}&
done
wait
echo "finish..."
for ip in `cat ip.txt`
do
{
ping -c1 -W $ip &>/dev/null
if [ $? -eq 0 ];then
ssh $ip "sed -ri '/^#UseDNS/cUseDNS no' /etc/ssh/sshd_config"
ssh $ip "sed -ri '/^GSSAPIAuthentication/cGSSAPIAuthentication no' /etc/ssh/sshd_config"
ssh $ip "systemctl stop firewalld;systemctl disable firewalld"
ssh $ip "sed -ri '/^SELINUX=/cSELINUX=disabled' /etc/selinux/config"
ssh $ip "setenforce 0"
fi
}&
done
wait
echo "all ok..."
while read line
do
if [ ${#line} -eq 0 ];then
continue
fi
user=`echo $line|awk '{print $1}'`
pass=`echo $line|awk '{print $1}'`
id $user &>/dev/null
if [ $? -eq 0 ];then
echo "user $user already exists"
else
useradd $user
echo "$pass" |passwd --stdin $user &>/dev/null
if [ $? -eq 0 ];then
echo "$user is created."
fi
fi
done <$1
推送公钥:
>ip.txt
password=centos
rpm -q expect &>/dev/null
if [ $? -ne 0 ];then
yum -y install expect
fi
if [ ! -f ~/.ssh/id_rsa ];then
ssh-keygen -P "" -f ~/.ssh/id_rsa
fi
for i in {2...254}
do
{
ip=192.168.40.$i
ping -c1 -W1 $ip &>/dev/null
if [ $? -eq 0 ];then
echo "$ip" >> ip.txt
/usr/bin/expect <<-EOF
spawn ssh-copy-id $ip
expect{
"yes/no" { send "yes\r";exp_continue}
“password:”{ send "$password\r"}
}
expect eof
EOF
fi
}&
done
wait
echo "finish..."