Linux学习笔记 --Bash ScriptsII

来源:互联网 发布:快手视频制作软件 编辑:程序博客网 时间:2024/06/07 22:15

#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



#获取主机用户信息#





原创粉丝点击