当前位置: 首页 > news >正文

linux系统shell语言的自动化交互

自动化交互

  • 自动化交互
    • expect交互
      • expect用法
    • sshpass
      • 概念
      • shhpass的脚本
        • 批量拷贝文件
        • 批量传递秘钥
        • 批量修改密码

自动化交互

expect交互

yum -y install expect tcl tcl-devel      //安装expect交互工具

expect用法

用法: 
1)#!/usr/bin/expect  //定义脚本执行的shell
2)set timeout 30     //设置超时时间30s 
3)spawn              //传递交互命令
4)expect             //判断输出结果是否包含某项字符串,没有则立即返回
5)send               //执行交互动作		
6)interact           //执行完后保持交互状态,把控制权交给控制台 
7)exp_continue       //继续执行接下来的操作
vim expect.exp        //运行脚本使用命令:expect expect.exp
#!/usr/bin/expect    //定义脚本执行的shellspawn ssh root@ip地址       //启动系统中需要交互的程序expect 
{"yes/no" {send "yes\r"; exp_continue}    //send发送回答,\r代表回车  //exp_continue,在"yes/no"没出现时忽略这句话"passwd:" {send "密码\r"} 
}interact            //停留在当前程序位置========================================================
bash调用expect语言
/usr/bin/expect <<-EOF
expect语言内容
expect eof             //运行结束后,离开当前程序位置,返回之前工作位置
EOF

sshpass

概念

实用程序旨在使用键盘交互密码身份验证模式运行SSH ,但以非交互方式运行。

SSH使用直接TTY访问来确保密码确实是由交互式键盘用户发出的。在专用的TTY中运行SSH

yum -y install sshpass     //安装sshpass第一次使用ssh登录时需要输入yes/no
sshpass -p0 ssh -o StrictHostKeyChecking=no  root@10.12.153.146使用sshpass获取ip地址
sshpass -p0 ssh root@10.12.153.146 "ip a"指定文件
echo "0" > password
sshpass -f password ssh root@10.36.182.100 "ip a"结合scp一起使用
sshpass -p 密码 scp file root@ip:/路径远程解压
sshpass -p 密码 ssh root@ip -tt tar -xzf 远程文件.tar包 -C 解压路径

shhpass的脚本

批量拷贝文件
vim pass.txt
10.12.153.146 root 0 22
#!/bin/bash
[ -f /etc/init.d/functions ] && . /etc/init.d/functions
INFO=pass.txt
for IP in $(awk '{print $1}' $INFO)
doUSER=$(awk -v I=$IP 'I==$1{print $2}' $INFO)PASS=$(awk -v I=$IP 'I==$1{print $3}' $INFO)PORT=$(awk -v I=$IP 'I==$1{print $4}' $INFO)sshpass -p $PASS scp -o StrictHostKeyChecking=no $1 ${USER}@${IP}:$2  && \action "拷贝成功 $IP" /bin/true || action "拷贝失败 $IP" /bin/false
done
sshpass -p $PASS scp -o StrictHostKeyChecking=no $1 ${USER}@${IP}:$2  && action "拷贝成功 $IP" /bin/true || action "拷贝失败 $IP" /bin/false$1:要scp的文件
$2:scp的目标路径
批量传递秘钥
vim pass.txt
10.12.153.146 root 0 22
#!/bin/bash
[ ! -f $HOME/.ssh/id_rsa ] && ssh-keygen -t rsa -b 2048 -N "" -f $HOME/.ssh/id_rsa
[ -f /etc/init.d/functions ] && . /etc/init.d/functions
INFO=pass.txt
for IP in $(awk '/^[^#]/{print $1}' $INFO)
doUSER=$(awk -v I=$IP 'I==$1{print $2}' $INFO)PASS=$(awk -v I=$IP 'I==$1{print $3}' $INFO)PORT=$(awk -v I=$IP 'I==$1{print $4}' $INFO)sshpass -p $PASS ssh-copy-id -o StrictHostKeyChecking=no ${USER}@${IP}  && action "秘钥传输成功 $IP" /bin/true || action "秘钥传输失败 $IP" /bin/false
done
ssh-keygen -t rsa -b 2048 -N "" -f $HOME/.ssh/id_rsa
-t:指定要创建的密钥类型
-b:指定密钥长度
-N:提供一个新密语
-f:指定用来保存密钥的文件名ssh-copy-id:传输公钥的命令
批量修改密码
vim pass.txt
10.12.153.146 root 0 22
#!/bin/bash
[ -f /etc/init.d/functions ] && . /etc/init.d/functions
OLD_INFO=old_pass.txt
NEW_INFO=new_pass.txtfor IP in $(awk '/^[^#]/{print $1}' $OLD_INFO); doUSER=$(awk -v I=$IP 'I==$1{print $2}' $OLD_INFO)PASS=$(awk -v I=$IP 'I==$1{print $3}' $OLD_INFO)PORT=$(awk -v I=$IP 'I==$1{print $4}' $OLD_INFO)NEW_PASS=$(openssl rand -base64 8)sshpass -p "$PASS" ssh -p $PORT $USER@$IP -o StrictHostKeyChecking=no "echo $NEW_PASS | passwd --stdin $USER" && ( echo "$IP $USER $NEW_PASS $PORT [`date '+%F %T'`]" >> $NEW_INFO && action "配置成功 $USER $IP $NEW_PASS" /bin/true ) || action "配置失败 $USER $IP $PASS" /bin/false
done
sshpass -p "$PASS" ssh -p $PORT $USER@$IP -o StrictHostKeyChecking=no "echo $NEW_PASS | passwd --stdin $USER" && ( echo "$IP $USER $NEW_PASS $PORT [`date '+%F %T'`]" >> $NEW_INFO && action "配置成功 $USER $IP $NEW_PASS" /bin/true ) || action "配置失败 $USER $IP $PASS" /bin/false远程连接,使用免交互方式更改用户密码,成功的情况下,将ip 用户 新密码 端口 日期追加到新密码的文件内,并输入配置成功;失败的情况下,输出配置失败 用户 ip 老密码

相关文章:

linux系统shell语言的自动化交互

自动化交互 自动化交互expect交互expect用法 sshpass概念shhpass的脚本批量拷贝文件批量传递秘钥批量修改密码 自动化交互 expect交互 yum -y install expect tcl tcl-devel //安装expect交互工具expect用法 用法: 1)#!/usr/bin/expect //定义脚本执行的shell 2)set …...

HarmonyOS ArkTS 三方库的基本使用(十六)

如何获取三方库 目前提供了两种途径获取开源三方库&#xff1a; 1、通过访问Gitee网站开源社区获取 在Gitee中&#xff0c;搜索OpenHarmony-TPC仓库&#xff0c;在tpc_resource中对三方库进行了资源汇总&#xff0c;可以供开发者参考。 2、通过OpenHarmony三方库中心仓获取 …...

Spring boot封装rocket mq 教程

1、rocket mq版本 5.1.3 2、pom引入rocket mq依赖 <dependency><groupId>org.apache.rocketmq</groupId><artifactId>rocketmq-client-java</artifactId><version>5.0.4</version></dependency> 3、发送MQ消息工具类 impor…...

Java Swing手搓童年坦克大战游戏(I)

前言 业余偶尔对游戏有些兴趣&#xff0c;不过这样的时代&#xff0c;硬件软件飞速进步&#xff0c;2D游戏画面都无比精美&#xff0c;之前的8bit像素游戏时代早就过去了&#xff0c;不过那时候有许多让人印象深刻的游戏比如魂斗罗、超级玛丽、坦克大战(Battle City)等等。 学…...

【DevOps-04]】Operate阶段工具

一、简要说明 安装Docker安装Docker-compose二、安装Docker 官网地址:https://www.docker.com文档地址:Docker Docs仓库地址:https://hub.docker.com1、Docker相关网站 官方网站Get Docker | Docker Docs...

力扣2807.在链表中插入最大公约数

思路&#xff1a;遍历链表&#xff0c;对于每一个结点求出它与下一个结点的最大公约数并插入到俩个结点之间 代码&#xff1a; /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}…...

开始刷Leetcode之前你需要知道的 - The basic is all you need

数据结构&#xff1a;列表&#xff0c;哈希表&#xff0c;集合&#xff0c;栈&#xff0c;堆&#xff0c;链表&#xff0c;二叉树&#xff0c;图 入门算法&#xff1a;递归&#xff0c;排序算法&#xff0c;二分法&#xff0c;bfs&#xff0c;dfs list/array 列表常见操作&am…...

【PostgreSQL】模式Schema

PostgreSQL 数据库集群包含一个或多个命名数据库。角色和一些其他对象类型在整个集群中共享。与服务器的客户端连接只能访问单个数据库中的数据&#xff0c;该数据库在连接请求中指定。 数据库包含一个或多个命名schema&#xff0c;而这些schema又包含表。schema还包含其他类型…...

JavaScript实现的复杂功能:自动生成带水印的图片

#程序员的崩溃瞬间 在本文中&#xff0c;我们将讨论一个JavaScript实现的复杂功能&#xff0c;该功能可以自动为图片添加水印。这个功能在许多场景中都非常有用&#xff0c;例如&#xff0c;如果你想保护你的图片版权&#xff0c;或者你想在你的网站上显示自定义的水印。 一、…...

图神经网络|8.2 图卷积的计算基本方法

不同于一般的神经网络&#xff0c;网络层数的并不用特别多。 原因是只需要少数次数迭代后&#xff08;当迭代次数为图上的直径&#xff1f;任意两点最短距离的最大值&#xff1f;&#xff09;&#xff0c;某节点便可获取得到图上所有的节点。 通俗的理解是&#xff0c;在社会中…...

equals()与hashCode()方法详解

java.lang.Object类中有两个非常重要的方法&#xff1a; 1 2 public boolean equals(Object obj) public int hashCode() Object类是类继承结构的基础&#xff0c;所以是每一个类的父类。所有的对象&#xff0c;包括数组&#xff0c;都实现了在Object类中定义的方法。 回到…...

六、基于Flask、Flasgger、marshmallow的开发调试

基于Flask、Flasgger、marshmallow的开发调试 问题描述调试方法一调试方法二调试方法三 问题描述 现在有一个传入传出为json格式文件的&#xff0c;Flask-restful开发的程序&#xff0c;需要解决如何调试的问题。 #!/usr/bin/python3 # -*- coding: utf-8 -*- # Project :…...

TypeScript 从入门到进阶之基础篇(三) 元组类型篇

系列文章目录 TypeScript 从入门到进阶系列 TypeScript 从入门到进阶之基础篇(一) ts基础类型篇TypeScript 从入门到进阶之基础篇(二) ts进阶类型篇TypeScript 从入门到进阶之基础篇(三) 元组类型篇TypeScript 从入门到进阶之基础篇(四) symbol类型篇 持续更新中… 文章目录 …...

现代CPU的多种运行模式

目前的CPU大多是支持X86-64技术的兼容CPU&#xff0c;这包括AMD64以及Intel的IA32E&#xff08;后被正式命名为EM64T&#xff0c;Extended Memory 64 Technology&#xff09;&#xff0c;因为AMD64先出&#xff0c;而EM64T与AMD64完全兼容&#xff0c;所以也统一称为AMD64技术。…...

Python PDF处理模块pypdf库详解

概要 PDF&#xff08;Portable Document Format&#xff09;是一种常见的文档格式&#xff0c;广泛用于存储和共享文本和图像数据。在 Python 中&#xff0c;有许多库可以用于处理 PDF 文件&#xff0c;其中之一就是 PyPDF。PyPDF 是一个功能强大的库&#xff0c;它允许你读取…...

C++上位软件通过LibModbus开源库和西门子S7-1200/S7-1500/S7-200 PLC进行ModbusTcp 和ModbusRTU 通信

前言 一直以来上位软件比如C等和西门子等其他品牌PLC之间的数据交换都是大家比较头疼的问题&#xff0c;尤其是C上位软件程序员。传统的方法一般有OPC、Socket 等&#xff0c;直到LibModbus 开源库出现后这种途径对程序袁来说又有了新的选择。 Modbus简介 Modbus特点 1 &#…...

PLSQL Developer 15安装和oracle客户端安装

文章目录 前言一、PLSQL Developer1.下载2.安装 二、oracle客户端1.下载2.环境变量 三、使用1. oci2. 连接3. 配置文件 总结 前言 oracle是经常使用的数据库&#xff0c;PLSQL Developer是众多产品中比较不错的一款工具&#xff0c;接下来我们来介绍PLSQL Developer的安装和使…...

【深度deepin】深度安装,jdk,tomcat,Nginx安装

目录 一 深度 1.1 介绍 1.2 与别的操作系统的优点 二 下载镜像文件及VM安装deepin 三 jdk&#xff0c;tomcat&#xff0c;Nginx安装 3.1 JDK安装 3.2 安装tomcat 3.3 安装nginx 一 深度 1.1 介绍 由深度科技社区开发的开源操作系统&#xff0c;基于Linux内核&#xf…...

解决flask启动报错:ImportError: DLL load failed while importing _dukpy: 找不到指定的程序

现象&#xff1a; 原因&#xff1a;dukpy没有win32执行库 解决办法&#xff1a; 到lfd.uci.edu 第三方库下载dukpy的win32 whl文件 注意&#xff1a; 需要跟你python版本和windows平台&#xff08;32位/64位&#xff09;对应 https://www.lfd.uci.edu/~gohlke/pythonlibs/#…...

腾讯面试总结

腾讯 一面 mysql索引结构&#xff1f;redis持久化策略&#xff1f;zookeeper节点类型说一下&#xff1b;zookeeper选举机制&#xff1f;zookeeper主节点故障&#xff0c;如何重新选举&#xff1f;syn机制&#xff1f;线程池的核心参数&#xff1b;threadlocal的实现&#xff…...

面向对象进阶(static关键字,继承,方法重写,super,this)

文章目录 面向对象进阶部分学习方法&#xff1a;今日内容教学目标 第一章 复习回顾1.1 如何定义类1.2 如何通过类创建对象1.3 封装1.3.1 封装的步骤1.3.2 封装的步骤实现 1.4 构造方法1.4.1 构造方法的作用1.4.2 构造方法的格式1.4.3 构造方法的应用 1.5 this关键字的作用1.5.1…...

Blazor项目如何调用js文件

以下是来自千问的回答并加以整理&#xff1a;&#xff08;说一句&#xff0c;文心3.5所给的回答不完善&#xff0c;根本运行不起来&#xff0c;4.0等有钱了试试&#xff09; 在Blazor项目中引用JavaScript文件&#xff08;.js&#xff09;以实现与JavaScript的互操作&#xff…...

Windows11 - Ubuntu 双系统及 ROS、ROS2 安装

系列文章目录 前言 一、Windows11 - Ubuntu 双系统安装 硬件信息&#xff1a; 设备名称 DESKTOP-B62D6KE 处理器 13th Gen Intel(R) Core(TM) i5-13500H 2.60 GHz 机带 RAM 40.0 GB (39.8 GB 可用) 设备 ID 7673EF86-8370-41D0-8831-84926668C05A 产品 ID 00331-10000-0000…...

深度学习(学习记录)

题型&#xff1a;填空题判断题30分、简答题20分、计算题20分、综合题&#xff08;30分&#xff09; 综合题&#xff08;解决实际工程问题&#xff0c;不考实验、不考代码、考思想&#xff09; 一、深度学习绪论&#xff08;非重点不做考察&#xff09; 1、传统机器学习&…...

html5实现好看的个人博客模板源码

文章目录 1.设计来源1.1 主界面1.2 认识我界面1.3 我的文章界面1.4 我的模板界面1.5 文章内容界面 2.结构和源码2.1 目录结构2.2 源代码 源码下载 作者&#xff1a;xcLeigh 文章地址&#xff1a;https://blog.csdn.net/weixin_43151418/article/details/135368653 html5实现好看…...

SpringSecurity深度学习

SpringSecurity简介 spring Security是什么&#xff1f; Spring Security 是一个强大且高度可定制的身份验证和访问控制框架&#xff0c;用于保护基于Spring的应用程序。它是Spring项目的一部分&#xff0c;旨在为企业级系统提供全面的安全性解决方案。 一个简单的授权和校验…...

odoo17 | 用户界面的基本交互

前言 现在我们已经创建了我们的新模型及其 相应的访问权限&#xff0c;是时候了 与用户界面交互。 在本章结束时&#xff0c;我们将创建几个菜单以访问默认列表 和窗体视图。 数据文件 &#xff08;XML&#xff09; Odoo在很大程度上是数据驱动的&#xff0c;因此模块定义的…...

Intel 性能监视器之二

全文来自Intel开发者手册&#xff1a;Intel? 64 and IA-32 Architectures Software Developer’s Manual Volume 3B System Programming Guide.pdf 注意&#xff1a;下文中已经指出手册中的对应页面和章节&#xff0c;请对照手册原文看&#xff0c;任何个人理解错误&#xff…...

Vert.x学习笔记-什么是事件总线

广义事件总线介绍Vert.x的事件总线Vert.x的事件总线的实现方式Vert.x的事件总线通信模式事件总线与消息队列的区别点对点通信模式请求-应答通信模式发布-订阅通信模式 Vert.x的事件总线应用场景Vert.x的事件总线消息Vert.x的事件总线消息示例Vert.x的事件总线的消息类型 拓展 广…...

STM32学习笔记二十二:WS2812制作像素游戏屏-飞行射击游戏(12)总结

至此&#xff0c;飞行射击游戏已经基本实现该有的功能&#xff0c;已经比较接近早期的商业游戏了。 如果采用脚本&#xff0c;可以完成关卡游戏&#xff0c;如果不用&#xff0c;也可以做成无限挑战游戏。 我们汇总一下制作的过程&#xff1a; 1、建模UML 2、主循环处理过程…...

网站怎么管理维护/百度指数电脑版

智能社确实不错&#xff0c;原文出处 http://www.w3cplus.com/css3/css3-3d-transform.html 三维变换使用基于二维变换的相同属性&#xff0c;如果您熟悉二维变换&#xff0c;你们发现3D变形的功能和2D变换的功能相当类似。CSS3中的3D变换主要包括以下几种功能函数&#xff1a;…...

用dede做的网站首页/免费行情网站app大全

category.php页面&#xff0c;有其默认的排序方式&#xff0c;但是现在要实现的排序方式&#xff1a;首页广告位的产品链接地址&#xff1a;category.php?id3&gid4(id&#xff0c;是分类ID默认的&#xff1b;gid&#xff0c;是自定义增加的&#xff0c;产品的ID)&#xff…...

网站建设公司 青岛/网店培训机构

一、相关知识 1、数据集构成&#xff1a;特征值目标值 2、机器学习算法分类 监督学习 目标值:类别–>分类问题 目标值:连续型数据–>回归问题 无监督学习 目标值:无 3、训练集和测试集之间的性能差异是过拟合的明显标志 ——————————————…...

广告网站制作报价/外贸营销策略都有哪些

IT主管对VMware新推出的两款超级融合基础设施产品爱恨交加。 Nutanix公司的Xtreme计算平台在新推出的4.6版本中引入了全新的应用移动架构&#xff0c;VMware有一款名为VxRail的全新超级融合设备&#xff0c;围绕VMware软件构建&#xff0c;包括vSphere、vCenter Server以及VSAN…...

寿县网站建设/天津百度seo排名优化

学习MongoTemplate操作MongoDB增删改查一、准备1、依赖2、yml3、实体类二、案例1、增2、删3、改4、查4.1、根据Id查询数据4.2、条件查询方法4.3、模糊查询4.4、分页查询一、准备 1、依赖 <dependency><groupId>org.springframework.boot</groupId><artif…...

外贸公司网站建站/百度推广电话号码

首先查看/dev/ttyUSB0的权限属性,在终端输入:ll /dev/ttyUSB0teashawxiaopeiqing.com:~$ ll /dev/ttyUSB0crw-rw—- 1 root dialout 188, 0 Jan 16 11:12 /dev/ttyUSB0可以看到ttyUSB0文件的属性对于teashaw这个用户是没有读写权限的。第一种方法(单次生效)&#xff1a;teashaw…...