本文共 3627 字,大约阅读时间需要 12 分钟。
for 定义变量do 使用变量,执行动作done 结束标志格式1:#!/bin/bashfor WESTOS in `seq 2 2 10`do echo $WESTOSdone格式2:for WESTOS in 1 2 3do echo $WESTOSdone格式3:for WESTOS in { 10..1}do echo $WESTOSdone格式4:for ((WESTOS=0;WESTOS<10;WESTOS++))do echo $WESTOSdone
vim check_host.shfor ip in { 1..10}do ping -w1 -c1 172.25.254.$ip &>/dev/null && { echo 172.25.254.$ip }done
下图的sed -n '$=' userfile可以替换为awk 'BEGIN{N=0}{N++}END{print N}' userfile
while ture #条件为真do #条件成立所作循环动作done
until false ##条件为假do #条件不成立所作循环动作done
ifthenelifthen...elsefi
while truedo read -p " please input filename : " filename if [ "$filename" = "exit" -o "$filename" = "EXIT" ] then echo bye exit elif [ -z "$filename" ] then echo -n "" ##进入下一行 elif [ ! -e "$filename" ] then echo $filename is not exist elif [ -f "$filename" ] then echo $filename is file elif [ -d "$filename" ] then echo $filenmae is direcory else echo ukown file type fi done
case $1 in word1|WORD1) action1 ;; word2|WORD2) action2 ;; *) action3esac
case $1 in disk) watch -t -n 1 df -H #-t会关闭watch命令在顶部的时间间隔 ;; memory) watch -t -n 1 free -m ;; upload) watch -t -n 1 uptime ;; *) echo -e "Error:Please input correct options!!"esac
在输入前可以进行一下提示,提示应该输入哪些内容。
dnf install expect -y问题脚本#!/bin/bashread -p "what's your name:" NAMEread -p "How old are you: " AGE read -p "Which objective: " OBJread -p "Are you ok? " OKecho $NAME is $AGE\'s old study $OBJ feel $OK应答脚本 #expect answer.exp#!/usr/bin/expectset timeout 1set NAME [ lindex $argv 0 ]set AGE [ lindex $argv 1 ]set OBJ [ lindex $argv 2 ]set FEEL [ lindex $argv 3 ]spawn /mnt/ask.shexpect { "name" { send "$NAME\r";exp_continue } "old" { send "$AGE\r";exp_continue } "objective" { send "$OBJ\r";exp_continue } "ok" { send "$FEEL\r" }}expect eof
问题脚本
应答脚本 进行应答的简化: 当问题脚本和应答脚本同时写进一个sh脚本,写法如下:查看能连接的主机里面有没有westos用户,如果没有,则建立westos用户,密码westos[root@localhost mnt]# cat host_list.sh #!/bin/bashEXPECT(){ /usr/bin/expect << EOFset timeout 3spawn ssh root@172.25.254.$1 "$2"expect {"yes/no" { send "yes\r";exp_continue }"password:" { send "westos\r" }}expect eofEOF}for IP in { 1..10}do ping -c1 -w1 172.25.254.$IP &>/dev/null &&{ USER_STATE=`EXPECT $IP "getent passwd $1" | grep -E '/authenticity|ECDSA|connecting|Warning|sqawn|password' -v ` if [ -n "$USER_STATE" ] then echo "$1 on 172.25.254.$IP is exist " else EXPECT $IP "useradd $1 && echo $2 | passwd --stdin $1" fi }donesh host_list.sh westos westos
查看当前主机能连接的主机的主机名[root@localhost mnt]# cat host_list.sh #!/bin/bashEXPECT(){ /usr/bin/expect << EOFset timeout 3spawn $1expect {"yes/no" { send "yes\r";exp_continue }"password:" { send "westos\r" }}expect eofEOF}for IP in { 1..10}do ping -c1 -w1 172.25.254.$IP &>/dev/null &&{ EXPECT "ssh root@172.25.254.$IP hostname" | tail -n 1 }done
contiue ##终止当此次前循环提前进入下个循环break ##终止当前所在语句所有动作进行语句外的其他动作exit ##脚本退出
转载地址:http://inhzi.baihongyu.com/