自己做的网站如何上传,网站建设低价建站损失在哪里,新网域名注册流程,2022千锋教育培训收费一览表shell脚本的编写一方面为了减少我们命令的输入#xff0c;另一方面也可以进行简单的自动化运行#xff0c;其中为了实现自动化过程#xff0c;一个很重要的点就是免交互#xff0c;本篇文章跟大家简单分享两个常用的免交互的方法。
Here Document Here document 通过内联重…shell脚本的编写一方面为了减少我们命令的输入另一方面也可以进行简单的自动化运行其中为了实现自动化过程一个很重要的点就是免交互本篇文章跟大家简单分享两个常用的免交互的方法。
Here Document Here document 通过内联重定向实现免交互——有关资料请参考内联输入重定向-CSDN博客 基本格式 命令 标记 。。。 。。。 标记 注意事项 标记标记可以是任何”合法字符“尽量大写方便区分。 结尾的结束标记一定要顶格写且除了结束标记本身外不能有任何字符。 开始标记前后的空格会被 省略 开头标记加上单引号‘’表示不解释变量 开头标记前加-表示忽略制表符或空格 EOF EOF 注释的一种方式两个EOF中间的会被省略 在脚本内书写该语句时要注意空格的使用因为这个错误很难被发现。 例 设置密码的免交互 [rootlocalhost ~]# useradd zhangsan
[rootlocalhost ~]# passwd zhangsanEOF111111EOF 支持使用变量 在脚本中添加如下语句 #!/bin/bash
aaa.txt
bni hao
cat $a EOF
我要对你说$b
EOF执行结果为我要对你说aa.txt 整体赋值给变量 [rootlocalhost ~]# vim bb.sh
#!/bin/bash
a很高兴认识你
b$(cat EOF
你好
$a
EOF
)
echo $b执行该脚本后结果为你好 很高兴认识你 expect expect 基础依赖TCL语言是一种工具命令语言在特定环境下使用的特殊命令仅适用该特定环境 软件包 expec 术语概念 expect 表示判断输出的内容中是否包含指定字符串 判断语句只识别英文标点符号可以省略 send 发送可以发送字符串命令之类 spawn 开启一个会话 常跟系统命令 该命令不能作为远程客户端的发起者 set 常用设置设置超时响应时间set timeout 秒 针对spwan多一些跳过该命令以及后续的判断语句。 在expect环境中定义变量 set “变量” 接收本地主机位置参数 set 变量名 [ lindex $argv 0 ] set 变量名 [ lindex $argv 1 ] exp_continue 附加于expect后用{ exp_continue} 例 #!/usr/bin/expect
spawn ssh root192.168.10.102
expect {
*yes/no {send yes\r; exp_continue}
password: { send aptech\r; }
}
interact“ ”内表示判断语句
{ }内表示要执行的expect的命令如sendexp_continue ” “内表示判断语句 { }内表示要执行的expect的命令如send exp_continue用于一个程序发起两次交互请求才用。 expect eof 执行完毕后仅仅退出整个expect环境 自动化任务常用 interact 执行完毕后停留在当前的expect环境中例如远程登陆后停留在远程终端执行远程终端的命令。并不退出expect环境。 需要注意两种退出选项只能选其一 \r expect中的的换行符号 默认不换行需要在双引号结尾前添加 exec 在expect环境中执行bash命令 工作方式 在本地主机开启子进程来进行指令的操作 例 免交互登录远程服务器 用expect作解释器 #!/usr/bin/expect
spawn ssh root192.168.10.102
expect {
*yes/no {send yes\r; exp_continue}
password: { send aptech\r; }
}
interact注意expect后{ }内书写的格式以及exp_continue的使用 注意expect后{ }内书写的格式以及exp_continue的使用 用bash作为解释器 创建用户并设置密码 #!/bin/bash
user$1
password$2
useradd $user
expect EOF
spawn passwd $user expect New password:
send ${password}\r
expect Retry new password:
send ${password}\rexpect eof
EOF注意EOF会让expect环境完全退出在bash环境中无法留存到目标终端的expect环境中 注意EOF会让expect环境完全退出 免交互设计思路 确定解释器 第一步 将需要免交互的操作执行一遍确定固定的关键字。 第二步 根据上一步的关键字设置expect判断语句选用合适的书写形式
以上就是关于在shell脚本中两种免交互的设计方式如果有任何疑问欢迎留言看到会及时答复