“Linux免除系统交互操作方法” 及 “SSH批量修改主机密码脚本”

本文主要是介绍“Linux免除系统交互操作方法” 及 “SSH批量修改主机密码脚本”,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、Linux系统免除交互操作方法

1、EOF多文本输入

案例:为机器磁盘进行分区并实现挂载,免交互式操作,如何实现?

#!/bin/bash
fdisk /dev/sdb <<EOF
n
p
1
wq
EOFmkfs.xfs /dev/sdb1 &&  mkdir -p /data && mount /dev/sdb1 /data
echo '/dev/sdb1 /data xfs defaults 0 2' >> /etc/fstab# 与 echo -e "n\np" | fdisk /dev/sdb 方式一样

2、Expect工具

一. expect 简介

  • expect 工具是一个根据脚本与其他交互式程序进行交互。通过在脚本中设定期望值和响应值进行交互操作。主要应用于执行命令和程序时,系统以交互形式要求输入指定字符串,实现交互通信。

  • 解释型语言提供分支和高级控制结构引导对话。此外,用户可以在需要时直接进行控制和交互,然后将控制权返回给脚本。

  • 简单来说,expect工具可以控制、处理输入,输出流,然后提供自动填写数据等需要用户交互式输入的数据的地方实现自动化处理。Expect就是为了处理“自动交互”的工具。

二. expect工作原理

spawn启动指定进程—expect获取指定关键字—send向指定程序发送指定字符—执行完成退出。


三. 基本语法

expect 启动选项:

-c	执行脚本前先执行的命令,可多次使用
-d	debug模式,可以在运行时输出一些诊断信息,与在脚本开始处使用exp_internal 1相似。
-D	启用交换调式器,可设一整数参数。
-f	从文件读取命令,仅用于使用#!时。如果文件名为"-",则从stdin读取(使用"./-"从文件名为-的文件读取)。
-i	交互式输入命令,使用"exit"或"EOF"退出输入状态
--	标示选项结束(如果你需要传递与expect选项相似的参数给脚本时),可放到#!行:#!/usr/bin/expect --
-v	显示expect版本信息

expect 命令参数:

spawn	        交互程序开始,执行后面的命令或程序。set timeout n	设置超时时间,表示该脚本代码需在n秒钟内完成,如果超过,则退出。用来防止ssh远程主机网络不可达时卡住及在远程主机执行命令宕住。如果设置为-1表示不会超时set	            定义变量$argv	        expect脚本可以接受bash的外部传参,可以使用[ lindex $argv n ]n为0表示第一个传参,为1表示第二个传参,以此类推expect	        从交互程序进程中指定接收信息, 如果匹配成功, 就执行send的指令交互;否则等待timeout秒后自动退出expect语句send	        如果匹配到expect接受到的信息,就将send中的指令交互传递,执行交互动作。结尾处加上\r表示如果出现异常等待的状态可以进行核查exp_continue	表示循环式匹配,通常匹配之后都会退出语句,但如果有exp_continue则可以不断循环匹配,输入多条命令,简化写法。exit	        退出expect脚本expect eof	    spawn进程结束后会向expect发送eof,接收到eof代表该进程结束interact	    执行完代码后保持交互状态,将控制权交给用户。没有该命令执行完后自动退出而不是留在远程终端上puts	        输出变量(打印字符串,类似于echo)

注释puts在输出字符串的尾部自动添加换行符而send_user不会自动添加,除了换行符外,如果在Expect脚本中使用日志文件,则通过发送的语句send_user会将其放入日志文件,而通过发送的语句puts则不会。

四、案例介绍

[root@localhost ~]# vim test.sh				=>	一般将expect脚本的后缀命名为".sh"#!/usr/bin/expect			=>	expect的解析器,与shell中的#!/bin/bash类似
set timeout n				=>	设置超时时间n秒,表示下面的代码需在n秒钟内完成(-1代表永不超时),如果超过,则退出。用来防止ssh远程主机网络不可达时卡住及在远程主机执行命令宕住 
set name "12345"			=>	set设置变量,name的值为123456spawn command1 command2..				=>	执行命令,也可以将变量作为命令输入
expect{									=>	接受执行命令返回的信息"accept1" {send "instruction1\r"; exp_continue}						=>	匹配到accest1,发送instruction1 指令并且\r 回车执行"accept2" {send "instruction2\r"; exp_continue}			=>	匹配到accest2,发送instruction2 指令并且\r 回车执行,exp_continue表示循环匹配"accept3" {send "\r"; exp_continue}									=>	匹配到accept3表示直接回车执行"accept4" {send "$name\r"}								=>	匹配到accept4,将变量值作为指令,并且回车执行
}expect eof                             =>结束这个进程

这篇关于“Linux免除系统交互操作方法” 及 “SSH批量修改主机密码脚本”的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/197940

相关文章

不懂推荐算法也能设计推荐系统

本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系

基于人工智能的图像分类系统

目录 引言项目背景环境准备 硬件要求软件安装与配置系统设计 系统架构关键技术代码示例 数据预处理模型训练模型预测应用场景结论 1. 引言 图像分类是计算机视觉中的一个重要任务,目标是自动识别图像中的对象类别。通过卷积神经网络(CNN)等深度学习技术,我们可以构建高效的图像分类系统,广泛应用于自动驾驶、医疗影像诊断、监控分析等领域。本文将介绍如何构建一个基于人工智能的图像分类系统,包括环境

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,

linux-基础知识3

打包和压缩 zip 安装zip软件包 yum -y install zip unzip 压缩打包命令: zip -q -r -d -u 压缩包文件名 目录和文件名列表 -q:不显示命令执行过程-r:递归处理,打包各级子目录和文件-u:把文件增加/替换到压缩包中-d:从压缩包中删除指定的文件 解压:unzip 压缩包名 打包文件 把压缩包从服务器下载到本地 把压缩包上传到服务器(zip

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟&nbsp;开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚&nbsp;第一站:海量资源,应有尽有 走进“智听

Linux 网络编程 --- 应用层

一、自定义协议和序列化反序列化 代码: 序列化反序列化实现网络版本计算器 二、HTTP协议 1、谈两个简单的预备知识 https://www.baidu.com/ --- 域名 --- 域名解析 --- IP地址 http的端口号为80端口,https的端口号为443 url为统一资源定位符。CSDNhttps://mp.csdn.net/mp_blog/creation/editor

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

浅谈主机加固,六种有效的主机加固方法

在数字化时代,数据的价值不言而喻,但随之而来的安全威胁也日益严峻。从勒索病毒到内部泄露,企业的数据安全面临着前所未有的挑战。为了应对这些挑战,一种全新的主机加固解决方案应运而生。 MCK主机加固解决方案,采用先进的安全容器中间件技术,构建起一套内核级的纵深立体防护体系。这一体系突破了传统安全防护的局限,即使在管理员权限被恶意利用的情况下,也能确保服务器的安全稳定运行。 普适主机加固措施: