#
test条件判断
#
test命令可用于评估bash脚本中的表达式。它评估其参数所指定的表达式,如果表达式为true,返回零退出状态,如果表达式为false,则返回非零退出状态。test具有替代语法,使用方括号"[]"将表达式括起来,这样更易于阅读。
语法:
test EXPRESSION 或 [EXPRESSION]
非零或零长度字符串运算符:test -{n|z} STRING
字符串比较运算符:
数字比较运算符:
-eq##相等
-ne##不相等
-lt##小于
-le##小于等于
-gt##大于
-ge##大于等于
文件状态运算符:
test -{b|c|e|f|d|r|w|x|s|L} FILE/DIRECTORY
二进制文件运算符:
-ef、-nt、-ot
逻辑运算符:
-o、-a、!、&&、||
#检查IP是否ping通#
#加法运算#
#检查文件状态#
while语句
IF语句
IF语句+函数
#用户建立、删除 【函数】#
#expect语句#
在shell中利用expect实现自动应答脚本。
[ root@foundation66 ]#
yum install expect -y
[ root@foundation66 mnt ]# vim ask.sh
[ root@foundation66 mnt ]# vim answer.exp
set timeout 10 ##设置后面所有的expect命令的等待响应的超时时间,单位为秒
#expect语句实现ssh功能#
[ root@foundation66 mnt ]# vim ssh1.exp
#!/bin/expect
set IP [ lindex $argv 0 ]
set PASS [ lindex $argv 1] ##设置变量
spawn ssh root@$IP ##spawn是expect的内部命令,作用是给后面的指令加个壳,用来传递交互指令。
expect { ##expect " "判断上次输出结果里是否包含“ ”的字符串
"yes/no" { send "yes\r"##执行交互动作,相当于手工输入"yes" ;exp_continue##继续执行expect " " }
"password:" { send "$PASS\r" }
}
interact ##执行完成后保持交互状态,把控制权交给控制台,这个时候就可以手工操作了。否则退出登录
##< expect eof >作用是在输出中搜索文件结束符,如果没有这一行,脚本会立即退出,得不到正确结果。
#获取主机名#
#编辑/mnt/ssh1.exp文件,添加HOSTNAME变量
[ root@foundation66 mnt ]# vim check_host.sh
#!/bin/bash
if ##如果$*不为空
[ -n "$*" ]
then
MAX_LINE=`wc -l $* | awk '{print $1}'` ##定义MAX_LINE值为 $* 即<filename> 的行数
for NUM in `seq 1 $MAX_LINE` ##定义NUM且做for循环
do
IP=`sed -n ${NUM}p $* | awk '{print $1}'` ##定义IP值为 $* 的第NUM行第一列
PASS=`sed -n ${NUM}p $* | awk '{print $2}'` ##定义PASS值为 $* 的第NUM行第二列
/mnt/autosh.exp $IP $PASS hostname | tail -n 1 ##执行 /mnt/autosh.exp $IP $PASS hostname | tail -n 1
done
else
echo "Useage:check_host.sh <filename>"
fi
#设置172.25.254.166及172.25.254.66的DNS
[ root@foundation66 mnt ]# /mnt/check_host.sh /mnt/host
#获取主机用户信息#
[ root@foundation66 mnt ]# vim check_host.sh
[ root@foundation66 mnt ]# /mnt/check_host.sh /mnt/host
#检查服务器的文件系统的磁盘空间占用情况#
[ root@foundation66 mnt ]# vim check_host.sh
[ root@foundation66 mnt ]# /mnt/check_host.sh /mnt/host
#获取主机用户信息#