浅谈shell脚本免交互的四大方法
在写shell脚本的过程中,我们经常碰到一些操作需要我们取实时指定一些参数,这就需要用到免交互了。免交互让我们的shell脚本更加强大。
介绍几种免交互的方式
1.管道符
不同命令间协调工作,位于|左侧命令的输出结果,将作为右侧命令的输入(处理对象)
例1免交互修改账户密码
vimpswd.sh #!/bin/bash echo"Abc1357 Abc1357"|passwd--stdinyu [root@node1~]#shpswd.sh 更改用户yu的密码。 passwd:所有的身份验证令牌已经成功更新。
例2免交互自动分区磁盘
vimdisk.sh #!/bin/bash echo"n p w"|fdisk/dev/sdf
此脚本能够直接将磁盘分区,免去交互过程
2.重定向符
echo123123>pass.txt#重定向输出,将123123写到指定文件中 passwd--stdinyu3.标记间的内容传递给命令
标记可以使用任意合法字符(通常为EOF),结束标记符前后不能有任何字符,包括空格
[root@node1~]#passwd--stdinyu<123456 >EOF 更改用户yu的密码。 passwd:所有的身份验证令牌已经成功更新。 4.expect免交互
例ssh登陆免交互
yum-yinstallexpect vimexpect.sh #!/usr/bin/expect #设置超时时间 settimeout60 #参数传入 sethostname[lindex$agv0]#追加参数0,加载第1位参赋予变量hostname setpassword[lindex$agv1]#追加参数1,加载第2位参赋予变量password #追踪命令 spawnsshroot@$hostname#spawn后面通常跟一个命令,表示开启了一个会话,启动进程,并跟踪后续交互信息 expect{#捕捉交互信息 "(yes/no)"#捕捉到字符(yes/no) {send"yes\r";exp_continue}#发送交互信息"yes\r";exp_continue表示允许expect继续向下执行命令 "*password" {send"$password\r"} } interact#把控制权交给用户控制台例新用户设置密码
vimexpect1.sh #!/bin/bash user=$1 password=$2 useradd$user expect<执行脚本
./eof.shzhangsan123123到此这篇关于浅谈shell脚本免交互的四大方法的文章就介绍到这了,更多相关shell免交互内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!