shell学习笔记(二)

特殊符号:

 

 

 

 {} 集合

${}变量引用

#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..."

  

  

posted @ 2020-12-14 22:20  石shi  阅读(143)  评论(0编辑  收藏  举报