多多卡起货网站建设,wordpress运行时间,wordpress作品集主题,grimhelm.wordpress目录 绪论
1、here Document免交互
1.1 格式
1.2 cat结合免交互实现重定向输出到指定文件 1.3 变量替换
2、Expect免交互
2.1 三种写法
3、免交互实现普通用户切换root
3.1 send_user
4、接收参数
5、嵌入执行模式
6、ssh远程登录 绪论
免交互#xff1a;不需要人…目录 绪论
1、here Document免交互
1.1 格式
1.2 cat结合免交互实现重定向输出到指定文件 1.3 变量替换
2、Expect免交互
2.1 三种写法
3、免交互实现普通用户切换root
3.1 send_user
4、接收参数
5、嵌入执行模式
6、ssh远程登录 绪论
免交互不需要人为控制就可以完成的自动化操作自动化运维
1、here Document免交互
使用i/o输入/输出重定向的方式将命令的列表提供给交互式的程序或者命令
cat read 是一种标准输入只能接受正确的指令或者命令
1.1 格式
命令 标记
...
...
标记
eg
注意事项
· 标记可以使用人以合法字符通常用EOF
· 结尾的标记一定要顶格写前面不能有任何字符
· 结尾的标记后面也不能有任何字符包括空格
· 如果开头的标记前有空格这个空格会被自动省略
egread i EOF read只能输入一次
123
EOF
echo $i
1.2 cat结合免交互实现重定向输出到指定文件 1.3 变量替换
vim test.sh进入编辑
#!/bin/bash
filetest.txt
ischool
cat $file EOF
I am going to $i
EOF 保存退出 2、Expect免交互
tcl语言基础之上的一种工具自动化测试和控制在脚本中解决交互的问题
转义符\n 换行 \t制表符tab键 \r回车 \b退格键就是删除键
基本命令格式 #!/usr/bin/expect 语法
· spawn后面通常跟一个linux的执行命令表示开启一个会话启动一个进程并且跟踪后续的交互信息
· expect捕获上一次执行的命令中是否包含指定的字符串如果有立即返回否则等待超时自动退出默认超时时间为10s
· expect 只能捕获由spawn启动的进程输出
· send 向进程发送字符串用于模拟用户的输入该命令不能自动回车一般后面加一个回车键\r 或者\n
2.1 三种写法
第一种写法
#!/use/bin/expect
set timeout 5
spawn passwd lisi
expect 新的密码
send abc123\r
expect 重新输入新的密码
send abc123\r
expect eof第二种写法
#!/use/bin/expect
set timeout 5
spawn passwd lisi
expect New password {send 123\r}
expect Retype new password {send 123\r}
expect eof第三种写法多分支结构
#!/use/bin/expect
set timeout 5
spawn passwd lisi
expect{
密码1{send abc123\r}
密码2{send abc123\r}
密码3{send abc123\r} 只要匹配其中一个情况执行相应的send语句然后退出}
结束符
expect eof 会切换回之前的终端
interact 留在当前终端不变
set 设置超市等待时间默认是10s
set timeout 5 -1则表示永不超时
3、免交互实现普通用户切换root
vim qiehuan.sh
#!/usr/bin/expect
set timeout 5
spawn su root
expect passwd
send 123\r
expect eof 保存退出
chmod 777 目录
su - lisi
sh qiehuan.shexpect_continue 可以在expect判断之后继续匹配expect捕获的其他内容类似于脚本中continue表示允许继续向下执行指令
使用expect_continue的结束语不能使用expect eof
expect {
(yes/no) {send yes\r;exp_continue}
passwd {send123\r}
}
3.1 send_user
send_user 会先信息相当于echo跟上用户想要输出的内容
4、接收参数
类似于shell当中的位置变量$1 $2
set hostname [linux $argv 0] $1 set password [linux $argv 0] $2
eg:
set timeout 5
set usr [lindex $argv 0]
set passwd [lindex $argv 1]
spawn su - $user
expect 密码 (或者passwd)
send $passwd\r
expect ]$
send_user 普通用户
expect ]#
send_user 管理员
interact
保存退出
./qiehuan lisi 123
5、嵌入执行模式
如果涉及终端切换最好不要用嵌入模式
将expect过程融入shell中方便执行和处理
egvim useradd.sh
#!/bin/bash
user$1
passwd$2
useradd $user
/usr/bin/expect -EOF
#expect 开始表示
spawn passwd $user
expect 新的*
send ${passwd}\r
expect 重新*
send ${passwd}\r
expect eof
EOF
保存退出
sh useradd.sh lisi 1236、ssh远程登录
#!/usr/bin/expect
set ip 192.168.233.30 #指定远程登录的ip地址
set user root
#指定为root用户
set password 123
#设定密码为123
set timeout 5spawn ssh $user$ip
expect {yes/no isend yes\r ;exp_continue}
password isend $password\r }
}
expect eof保存退出
chmod 777 ssh.sh
./ssh.sh
6.1 通过传参的方式实现
#!/usr/bin/expect
set name [lindex $argv 0]
set ip [lindex $argv 1]
set password [lindex $argv 2]
set timeout 5
spawn ssh
$name$ip
expect {
refused {send_ _user 访问被拒绝\r}
No route to host {send_ _user 主机名或者ip地址有误\n}
yes/no {send yes\r ;exp_ continue}
password {send $password\r}
}
expect eof
保存退出
./ssh.sh root 20.0.0.30 123