[linux shell]使用expect工具ssh登录远程服务器并执行命令操作

您所在的位置:网站首页 服务器远程登录命令 [linux shell]使用expect工具ssh登录远程服务器并执行命令操作

[linux shell]使用expect工具ssh登录远程服务器并执行命令操作

2024-06-03 11:10:19| 来源: 网络整理| 查看: 265

Expect说白了就是一个实现人机交互的命令工具,可以抓取和相应用户输入,也可以模拟用户输出。 比如你有n台服务器需要维护,要登录到所有的服务器上执行某项操作(如添加用户、修改一个用户的密码),如果按传统方法,一个一个去登录敲命令那就太麻烦了。可以通过expect写成shell脚本来批量处理,具体如下: 如果系统里没有expect请自行到官网下载安装:http://expect.sourceforge.net/ 1、创建服务器列表配置文件:[root@localhost ~]# vi server_list.conf192.168.0.10 22 root 123456 192.168.0.11 22 root 123456 192.168.0.12 60008 root 123456 说明:配置文件有4列,以空格分割:服务器IP ssh端口号 用户名 密码 2、编写expect脚本:[root@localhost ~]# vi dotask.exp#!/usr/bin/expect -fset ipaddress [lindex $argv 0]set port [lindex $argv 1]set username [lindex $argv 2]set passwd [lindex $argv 3]set timeout 30spawn ssh $ipaddress -p$port -l$usernameexpect {"yes/no" { send "yes\r";exp_continue }"password:" { send "$passwd\r" }}expect -re "\](\$|#) "send "touch test \r"expect -re "\](\$|#) "send "exit\r" 说明:这里只实现了登录服务器后在当前目录创建了一个test文件,具体需求请自行修改添加命令 3、批量执行 其实只要写好第2步的脚本就可以通过下面命令执行一台服务器的处理: [root@localhost ~]# expect dotask.exp 192.168.0.10 22 root 123456 但为了能批量处理n台,再写个shell脚本就行了,如下: [root@localhost ~]# vi doexcute.sh #!/bin/bash filename="server_list.conf" while read line do   #echo $line;   expect dotask.exp$linedone < $filename 说明:读取配置文件,循环执行 最后,其他具体的使用方法参见expect手册 ================================================= 实用工具:autoexpect ================================================= 如果自己懒得写expect代码,则可以用autoexpect生成。autoexpect工具是用expect写成的一个工具脚本,它可以录制你执行的操作、命令、键盘输入等等,之后自动生成expect脚本。 autoexpect脚本代码见:http://blog.sina.com.cn/s/blog_5432f2730100vcqn.html 使用方法: 1、把上面链接里的autoexpect代码保存成文件:autoexpect.exp 2、执行下面命令进行录制: [root@localhost ~]# expect autoexpect.exp -p  说明:执行完上面命令后就可以进行你需要的操作了,需要结束录制时,用exit退出即可。 3、录制完后,会在当前目录生成一个script.exp文件,这个文件就是录制好的expect脚本了。是直接拿来使用,还是再改改,或是学习用,就看你自己的需要了。 =========================================================================================== Expect是一个免费的编程工具语言,用来实现自动和交互式任务进行通信,而无需人的干预。 Expect的作者Don Libes在1990年开始编写Expect时对Expect做有如下定义:Expect是一个用来实现自动交互功能的软件套 件(Expect [is a] software suite for automating interactive tools)。使用它系统管理 员的可以创建脚本用来实现对命令或程序提供输入,而这些命令和程序是期望从终端(terminal)得到输入,一般来说这些输入都需要手工输入进行的。 Expect则可以根据程序的提示模拟标准输入提供给程序需要的输入来实现交互程序执行。甚至可以实现实现简单的BBS聊天机器人。 :) Expect是不断发展的,随着时间的流逝,其功能越来越强大,已经成为系统管理员的的一个强大助手。Expect需要Tcl编程语言的支持,要在系统上运行Expect必须首先安装Tcl

转自:http://blog.sina.com.cn/s/blog_5432f2730100vcql.html



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭