linux免交互

免交互

指不需要人为控制就可以完成的自动化操作。

shell脚本和免交互是一个概念,但是有两种写法。shell脚本基于bash。

here Document 免交互

它是一种标准输入,只能接收正确的命令,它主要是使用i/o重定向的方式将命令的列表提供给交互式的程序或者命令。

命令格式

wc -l <

注:标记要一致

注意事项;

1、标记可以使用任意合法字符(通常用EOF)。

2、结尾的标记一定要顶格写,前面不能有任何字符。

3、结尾的标记后面也不能有任何字符,包括空格。。

4、如果开头的标记有空格,会自动省略

免交互进行重定向

cat <>234.txt

Expect

它是基于tcl语言基础上的一种工具,可以自动化测试和控制,可以在脚本中解决交互的问题。

基本命令格式

#!/usr/bin/expect 使用时先声明
第一种
expect "密码"{send"123\r"}

第二种
expect "密码"
send"123\r"

第三种:多分支结构,只要匹配其中一个,就会执行相应的send语句,之后自动退出
expect {
""密码1" {send "123\r"}
""密码2" {send "123\r"}
}

转义符

\n:换行

\t:制表符(tab)

\r:回车

\b:删除

执行方式

1、必须赋权执行(chmod 777)

2、使用./进行执行

相关语法

spawn:后面通常会跟一个执行命令。表示开启一个命令,并跟踪后续的交互信息。(passwd lisi)

expect:捕获,捕获上一次执行的命令中是否包含指定的字符串,有就立即返回,否则等待超时时间,自动退出。只能捕获由spawn启动的进程。

send:向进程发送字符串,用于模拟用户输入。该命令不能自动回车,一般后面要加\r或\n。

结束符

会切换回之前的终端 expect eof

留在当前终端不变   interact

设置超时时间      set
  
5秒后自动退出     set timeout   5

永不超时          set timeout -1 

exp_continue

可以在expect判断之后继续匹配捕获的其他内容,允许继续向下执行命令。结束语不能使用expect eof。

expect {
"(yes/no)"{send"yes\r",exp_continue}
"passwd"{send"123\r"}
}

send_user 回显信息

相当于echo "信息"

接收参数:相当于shell的位置变量

set hostname [lindex $argv 0] $1
set password [lindex $argv 1] $2
/usr/bin/expect <<-EOF
...(内容)
expect eof
EOF

ssh远程登录

如果涉及终端切换,不要用嵌入模式

set ip 要登陆的IP地址

set user root 指定用户

set password 123
set timeout 5
spawn ssh $user@$ip
expect {
"(yes/no)" {send "yex\r"}
"password" {send "$password\r"}
}
expect eof

例子

用免交互的方式给硬盘分区,格式化,挂载

linux免交互_第1张图片

linux免交互_第2张图片

 

你可能感兴趣的:(linux,交互,microsoft)