提供网站建设服务平台,上海服饰网站建设,网站建设与推广方案模板,网店推广论文Linux 免交互 1、免交互概念2、基本免交互的例子2.1命令行免交互统计2.2使用脚本免交互统计2.3使用免交互命令打印2.4免交互修改密码2.5重定向查看2.6重定向到指定文件2.7重定向直接指定文件2.8使用脚本完成重定向输入2.9免交互脚本完成赋值变量2.10关闭变量替换功能#xff0… Linux 免交互 1、免交互概念2、基本免交互的例子2.1命令行免交互统计2.2使用脚本免交互统计2.3使用免交互命令打印2.4免交互修改密码2.5重定向查看2.6重定向到指定文件2.7重定向直接指定文件2.8使用脚本完成重定向输入2.9免交互脚本完成赋值变量2.10关闭变量替换功能按照原来样子输出2.11去tab键无法去空格2.12注释打印无法生效批量注释 3、expect3.1脚本解释器3.2 spawn启动新的进程并监控和捕捉3.3 expect 从进程接收字符串3.4 send用于向进程发送字符串3.5 exp_continue匹配多个字符串在执行动作后加此命令3.6 expect eof结束符3.7 interact允许用户交互3.8 set设置会话超时时间3.9 send_users回显命令3.10 接收参数 4、示例脚本ssh远程登录 1、免交互概念
概念对于shell脚本的自动化运维就要实现免交互来达到自动化运维的效果
2、基本免交互的例子
可以免交互统计出行号
2.1命令行免交互统计
wc -l EOFabcdEOF
42.2使用脚本免交互统计
cat 1.sh
wc -l EOF
a
b
EOF
[rootlocalhost ~]# sh 1.sh
22.3使用免交互命令打印
[rootlocalhost ~]# read i EOFaEOF
[rootlocalhost ~]# echo $i
a
[rootlocalhost ~]# 2.4免交互修改密码
passwd user EOF123123123123EOF2.5重定向查看
cat EOF尾声半个月亮跋从山峦到海洋EOF
尾声半个月亮
跋从山峦到海洋2.6重定向到指定文件
cat EOF1.txt
尾声半个月亮
跋从山峦到海洋
EOF2.7重定向直接指定文件
tee 1.txt EOF《额尔古纳河右岸》EOF
《额尔古纳河右岸》2.8使用脚本完成重定向输入
#!/bin/bash
file1.txt
igirl
cat $fileEOF
mws is a $i
EOF2.9免交互脚本完成赋值变量
#!/bin/bash
varLife is fucking move!
myvar$(catEOF
人生如戏
$var
EOF
)echo $myvar2.10关闭变量替换功能按照原来样子输出
#!/bin/bash
varLife is fucking move!
myvar$(catEOF
人生如戏
$var
EOF
)echo $myvar2.11去tab键无法去空格
#!/bin/bash
varGreat! I am going to school!
myvar$(cat -EOFthis is line 1.today is monday.$var
EOF
)echo $myvar2.12注释打印无法生效批量注释 脚本展示 #!/bin/bash
iab
:EOFabcd
abcd
$i
EOF命令展示 3、expect expect建立在tcl语言基础上的一个工具常被用于进行自动化控制和测试解决shell脚本中交互相关的问题。 使用方法表示捕捉关键词展示行 3.1脚本解释器
加入引用程序路径表示使用expect表明使用这个shell 运行只能使用./运行运行前赋权777
#!/usr/bin/expect3.2 spawn启动新的进程并监控和捕捉
spawn 后面通常跟一个Linux执行命令表示开启一个会话、启动进程并跟踪后续交互信息。 例如spawn passwd root
3.3 expect 从进程接收字符串
判断上次输出结果中是否包含指定的字符串如果有则立即返回否则就等待超时时间后返回;只能捕捉由sawn启动的进程的输出;用于接收命令执行后的输出然后和期望的字符串匹配
3.4 send用于向进程发送字符串
向进程发送字符串用于模拟用户的输入该命令不能自动回车换行一般要加\r回车或者\n用于代表回车键 方式一 expect 密码{send 123123\r} #同一行send部分要有{ }方式二 expect密码 #换行send部分不需要有{
send abc123\r方式三expect支持多个分支 expect #只要匹配了其中一个情况执行相应的send语句后退出该expect语句
{
密码1 {send 123123\r}
密码2 {send abcdef\r}
密码3 {send abc123\r}
}3.5 exp_continue匹配多个字符串在执行动作后加此命令
exp_continue 附加于某个 expect 判断项之后可以使该项被匹配后还能继续匹配该 expect 判断语句内的其他项。 exp_continue类似于控制语句中的 continue 语句。表示允许 expect 继续向下执行指令。
注意∶ 使用exp_continue时如果跟踪像 passwd 这样的输入密码后就结束进程的命令expect{}外不要再加上expect eof因为spawn进程结束后会默认向expect发送eof 会导致后面的 expect eof 执行报错
3.6 expect eof结束符
表示交互结束等待执行结束退回到原用户与spawn对应。
比如切换到root用户expect脚本默认的是等待10s当执行完命令后默认停留10s后自动切回了原用户
3.7 interact允许用户交互
会停留在目标终端而不会退回到原终端这个时候就可以手工操作了interact后的命.令不起作用;比如interact后添加exit并不会退出root用户。而如果没有interact则登录完成后会退出而不是留在远程终端上。使用interact会保持在终端而不会退回到原终端; 注意∶ expect eof 与 interact 只能二选一
3.8 set设置会话超时时间
expect 默认的超时时间是10秒通过set 命令可以设置会话超时时间若不限制超时时间则应设置为-1
3.9 send_users回显命令
表示回显命令相当于 echo
3.10 接收参数
expect 脚本可以接受从bash命令行传递参数使用 [ lindex $argv n ] 获得。其中你从0开始分别表示第一个第二个第三个…参数
set hostname [lindex $argv 0] #相当于 hostnames§1
set password [lindex Sargv 1] #相当于 password$2 4、示例脚本ssh远程登录