IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: 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脚本免交互

目录

一、Here Document 免交互

1、命令格式

2、Here Document使用注意事项

3、实例

二、Expect

1、基本命令

2、实例


一、Here Document免交互

1、命令格式

使用l/o重定向方式将命令列表提供给交互式程序

标准输入的一个代替品

命令格式

命令<<标记

内容

标记

2、Here Document的注意事项

(1)标记可以使用任意合法字符

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

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

(4)开头标记前后的空格会被省略掉

3、实例

(1)免交互实现对行数的统计行数

[root@localhost ~]# wc -l <<EOF
> 1
> 456
> 7810
> EOF
3

(2) 通过read命令接收命令

[root@localhost ~]# read b <<EOF
> like
> EOF
[root@localhost ~]# echo $b
like

?(3)免交互方式修改密码

[root@localhost ~]# passwd zs <<EOF
> 123123
> 123123
> EOF
更改用户 zs 的密码 。
新的 密码:无效的密码: 密码少于 8 个字符
重新输入新的 密码:passwd:所有的身份验证令牌已经成功更新。

(4)?在写入文件时会先将变量替换成实际值,再结合cat命令完成输出

#!/bin/bash
file="2.txt"
i=tea
cat> $file <<EOF
l like $i
EOF


[root@localhost ~]# cat 2.txt
l like tea

?

(5)?关闭变量替换的功能,按照字符原本的样子输出,不做任何修改或替换

#!/bin/bash
var="thress year"
myvar=$(cat <<'EOF'
today is friday
qqche
$var
EOF
)
echo $myvar

?

二、Expect

1、基本命令

建立在tcl语言基础上的一个工具,常被用于自动化控制和测试,解决shell脚本中交换相关的问题

安装软件包

[root@localhost ~]# yum install expect -y

(1)脚本解释器

expect脚本种首先引入文件,表明使用的是哪一个shell

[root@localhost ~]# which expect
/usr/bin/expect

(2)spawn

spawn后面通常跟一个Linux执行命令,表示开启一个会话、启动进程,并跟踪后续交互信息。例:spawn passwd root

(3)expect

判断上次输出结果中是否包含指定的字符串,如果有则立即返回,否则就等待超时时间后返回

只能捕捉由spawn启动的进程的输出

用于接收命令执行后的输出,然后和期望的字符串匹配

(4)send

向进程发送字符串,用户模拟用户的输入;该命令不能自动回车换行,一般要加\r(回车)或者\n

(5)interact
执行完成后保持交互状态,把控制权交给控制台

(6)set
设置超时时间,过期则继续执行后续指令
单位是秒
timeout -l表示永不超时
默认情况下,timeout是10秒

(7)exp_continue
允许expect继续向下执行指令
解析:如果有一条语句错误,不加exp_continue,就会到此为止,退出
加上exp_continue会继续执行后续语句,不退出。

(8)send_user
回显命令,相当于echo

(9)接收参数
Expect脚本可以接受从bash传递的参数
可以使用[lindex $argv n]获得
n从0开始,分别表示第一个,第二个,第三个…参数
/bin/bash的位置变量是从$1开始到$9结束
Expect[lindex $argv 0]相当于/bin/bash的$1

2、实例

设置ssh登录免交互.

#!/usr/bin/expect
# ssh免交互
set timeout 60                      设置超时时间60秒
set hostname [lindex $argv 0]       设置变量名,变量值来自位置变量0
set password [lindex $argv 1]
log_file a.log                      设置日志文件记录保存的文件夹
log_user 1                          记录屏幕输出
spawn ssh root@$hostname            发起启动进程ssh某主机名
expect {
    "(yes/no)" {send "yes\r;exp_continue"}
    "password" {send "$password\r"}
}
interact

?

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-04-23 11:09:45  更:2022-04-23 11:10:05 
 
开发: 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 20:29:42-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码