| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 系统运维 -> shell编程之免交互 -> 正文阅读 |
|
[系统运维]shell编程之免交互 |
目录 前言? ? ? ?在写shell脚本的过程中,我们经常碰到一些操作需要我们取实时指定一些参数,这就需要用到免交互了。免交互就是实现一个功能时,不需要连续从键盘输入信息,通过脚本或命令自动完成一些动作。 一、Here Document免交互? ? ?1、Here Document概述? ? ? ??使用I/O重定向的方式将命令列表提供给交互式程序或命令,比如ftp、cat或read命令。 ? ? ? ?HereDocument是标准输入的一种替代品,可以帮助脚本开发人员不必使用临时文件来构建输入信息,而是直接就地生产出一个文件并用作命令的标准输入。 ? ? ? ? 语法格式
? ? ? 2、注意事项? ? ? ? ?标记可以使用任意合法字符(大写字母)(EOF、FOE,前后要—致) ? ? ? ? ?结尾的标记一定要顶格写,前面不能有任何字符 ? ? ? ? ?结尾的标记后面也不能有任何字符(包括空格) ? ? ? ? 开头标记前后的空格会被省略掉 ? ? ? 3、案例? ? ? ? ?3-1、实现追加换行 ? ? ? ? ? ?3-2、输入内容到指定文件 ? ? ? ? ?3-3、给变量赋值 ? ? ? ? ?3-4、 给用户添加密码 ? ? ? ? ?3-5、变量的替换 ? ? ? ? ?3-6、脚本输入内容 ? ? ? ? ? ?3-7、去掉TAB键空格,顶格写 ? ? ? ? ? ?3-8、多行注释 二、Expect免交互? ? 1、expect概念? ? ? ?建立在tcl语言基础上的一个工具,常被用于进行自动化控制和测试,解决shell脚本中交互相关的问题。 ? ? ? ?expect它是一个程序,所以它也是需要提前安装才可以使用的 ?? ? ? 2、expect基本命令? ? ? ?2-1、脚本解释器 ? ? ? ? ? ? ?expect脚本中首先引入文件,表明使用的是哪一个shell. ? ? ? ? ? ? ?#!/usr/bin/expect ? ? ? ?2-2、spawn ? ? ? ? ? ? ?spawn后面通常跟一个Linux执行命令,表示开启一个会话、启动进程,并跟踪后续交互信? ? ? ? ? ? ? ?息。 ? ? ? ?2-3、expect ? ? ? ? ? ? ?判断上次输出结果中是否包含指定的字符串,如果有则立即返回,否则就等待超时时间后? ? ? ? ? ? ? ? 返回;只能捕捉由spawn启动的进程的输出;用于接收命令执行后的输出,然后和期望的字符? ? ? ? ? ? ? 串匹配。 ? ? ? ?2-4、send ? ? ? ? ? ? ??向进程发送字符串,用于模拟用户的输入;该命令不能自动回车换行,一般要加\r(回车)或? ? ? ? ? ? ? ? 者\n
? ? ? ?2-5、结束符expect eof ? ? ? ? ? ? ?表示交互结束,等待执行结束,退回到原用户,与spawn对应。? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ???比如切换到root用户,expect脚本默认的是等待10s,当执行完命令后,默认停留10s后,? ? ? ? ? ? ? ? 自动切回了原用户。 ? ? ? ? ? ??interact: ? ? ? ? ? ?注意:expect eof 与interact只能二选一。 ? ? ? ?2-6、set ? ? ? ? ? ? ?expect 默认的超时时间是10秒,通过 set 命令可以设置会话超时时间,若不限制超时时间? ? ? ? ? ? ? ? ?则应设置为-1。 ? ? ? ?2-7、?exp_continue ? ? ? ? ? ? ?exp_continue:
? ? ? ?2-8、send_ user ? ? ? ? ? ? ?send_ user表示回显命令,相当于echo ? ? ? ?2-9、接收参数 ? ? ? ? ? ? ?expect脚本可以接受从bash命令行传递的参数,使用[ lindex $argv? n ]获得。其中n从o开? ? ? ? ? ? ? ? ? ?始,分别表示第一个,第二个,第三个..参数。例:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?set hostname [ lindex $argv 0 ] ? ? 3、expect编写脚本? ? ? ?3-1、ssh无交互登录到远程服务器 ? ? ? ? ? ? ? 执行完程序后自动退出: ? ? ? ?3-2、引用位置变量 ? ? ? ?3-3、在shell脚本中调用expect ? ? ? ? ? ? ?创建用户并设置密码 ?总结? ? ? ? 注意Here Document免交互和Expect免交互在用法、格式和注意事项上的不同。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/15 16:49:20- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |