Linux执行命令提示Password,linux expect远程自动登录以及执行命令

linux远程自动登录以及执行命令

远程登录

该自动登录的过程是通过shell里面expect实现的,类似相当于开了一个类似于cmd的命令段输出IP和密码。

注意该脚本能够执行的前提是安装了expect

yum install -y expect

直接上脚本:

#!/usr/bin/expect                                   expect命令路径  whereis 查看

set timeout 5                                       执行超时时间  任何输入5S后退出

spawn /usr/bin/ssh root@192.168.1.132               连接的用户和主机IP

expect "*password:"                                 判断上次输出的结果中是否含有passwd 有就继续执行  没有就好等待5S超时退出

send "redhat\r"                                     输入密码

expect "*]#"                                        定义命令的开始

send "df -h\r"                                      发送要执行的命令

expect "*]#"                                        定义命令的结束

send "logout\r"                                     退出登录

(interact  #用exact这个指令是为了把控制权交给用户,代替send "logout\r" 终端不会断开)

注意 : 该脚本是expect脚本 不是shell  sh file. 不能执行  可以 ./file  或者 expect file

扩展: 可以将上面的脚本写入一个循环中,循环读取文件中的密码和IP进行批量的机器执行命令或者其他脚本。

106529934_1.jpg

1. [#!/usr/bin/expect]

这一行告诉操作系统脚本里的代码使用那一个shell来执行。这里的expect其实和linux下的bash、windows下的cmd是一类东西。

注意:这一行需要在脚本的第一行。

2. [set timeout5]

基本上认识英文的都知道这是设置超时时间的,现在你只要记住他的计时单位是:秒

3. [spawn ssh -l username 192.168.1.132]

spawn是进入expect环境后才可以执行的expect内部命令,如果没有装expect或者直接在默认的SHELL下执行是找不到spawn命令的。所以不要用 “which spawn“之类的命令去找spawn命令。好比windows里的dir就是一个内部命令,这个命令由shell自带,你无法找到一个dir.com 或 dir.exe 的可执行文件。

它主要的功能是给ssh运行进程加个壳,用来传递交互指令。

4. [expect "password:"]

这里的expect也是expect的一个内部命令,有点晕吧,expect的shell命令和内部命令是一样的,但不是一个功能,习惯就好了。这个命令的意思是判断上次输出结果里是否包含“password:”的字符串,如果有则立即返回,否则就等待一段时间后返回,这里等待时长就是前面设置的30秒

5. [send "df\r"]

这里就是执行交互动作,与手工输入密码的动作等效。

温馨提示: 命令字符串结尾别忘记加上“\r”,如果出现异常等待的状态可以核查一下。

6. [interact]

执行完成后保持交互状态,把控制权交给控制台,这个时候就可以手工操作了。如果没有这一句登录完成后会退出,而不是留在远程终端上。如果你只是登录过去执行

#!/usr/bin/expect #注意安装的路径,不确定 whereis expect 一下

如果有错误或者更好的建议,请大家指出!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/453376.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

双塔

## 双塔 题目描述 有n个数字,要求将这n个数字分成两部分(两部分可以数字个数不同),使得两部分数字之和的差最小 输入输出格式 输入: 第一行为n 第二行有n个数,即题目中所描述那样 输出: 两部分和…

时间复杂度计算杂记

算法时间复杂度的计算 [整理] 时间复杂度算法 基本的计算步骤 时间复杂度的定义 一般情况下,算法中基本操作重复执行的次数是问题规模n的某个函数,用T(n)表示,若有某个辅助函数f(n),使得当n趋近于无穷大时,T(n)/f(n…

MyBatis 在xml文件中处理大于号小于号的方法

为什么80%的码农都做不了架构师&#xff1f;>>> 第一种方法&#xff1a;用转义字符&#xff08;注&#xff1a;对大小写敏感&#xff01; &#xff09; 用了转义字符把>和<替换掉&#xff0c;然后就没有问题了。 SELECT * FROM test WHERE 1 1 AND start_da…

linux 进程间读写锁,Linux系统编程—进程间同步

我们知道&#xff0c;线程间同步有多种方式&#xff0c;比如&#xff1a;信号量、互斥量、读写锁&#xff0c;等等。那进程间如何实现同步呢&#xff1f;本文介绍两种方式&#xff1a;互斥量和文件锁。##互斥量mutex我们已经知道了互斥量可以用于在线程间同步&#xff0c;但实际…

程序员:开汽车,难道我要知道汽车的原理才能把车开好吗?

一个网友的迷惑&#xff1a; 我工作&#xff15;年了&#xff0c;一直做&#xff2a;&#xff12;&#xff25;&#xff25;的项目&#xff0c;前几天去面试&#xff0c;一个人问我JDBC有几种连接方式&#xff0c;这个问题这么多年以来我从来没有遇见过&#xff0c;不知道大家 …

杭州某知名xxxx公司急招大量java以及大数据开发工程师

因公司战略以及业务拓展&#xff0c;收大量java攻城狮以及大数据开发攻城狮. 职位信息&#xff1a; java攻城狮: https://job.cnblogs.com/offer/56032 大数据开发攻城狮: https://job.cnblogs.com/offer/56033 欢迎博客园的XDJM自荐和推荐&#xff01; 此招聘长期有效 欢迎留言…

35.6. /etc/dnsmasq.d/dnsmasq.address.conf

vim /etc/dnsmasq.d/dnsmasq.address.confaddress/www.mydomain.com/172.16.0.254deny domain address/www.facebook.com/127.0.0.1 address/www.google.com/127.0.0.135.6.1. 域名劫持 将域名解析到错误的地址&#xff0c;这样可以屏蔽一些网站。 address/www.facebook.com/12…

请求地址操作中的(int*)

例如 float b3.14,*a&b; int *p(int *)a; 表示将指针a的类型转换为整型指针再赋给p。

linux初始化内存盘卡住,Linux系统内存磁盘初始化技术详细解析

转自&#xff1a;http://m.zol.com.cn/article/1271270.html?viaindexLinux内存初始化技术(initrd)用于支持两阶段的系统引导过程&#xff0c;是在系统启动过程中被挂载的临时root文件系统(译者注&#xff1a;这里的root文件系统是指的根文件系统)。initrd包含很多可执行程序和…

程序员是程序中的临时变量,用完扔掉?

今天看到某人从坟墓里刨出的文章&#xff0c;挺有意思的。 程序员&#xff0c;到了一定年龄&#xff0c;如果没有机会转到领导级&#xff0c;至少是项目经理&#xff0c;能独立领导团队完成项目&#xff0c;还是停留在编码的层次&#xff0c;那么被迫离开的危险会是很高的&…

属性依赖注入

1.依赖注入方法 手动装配和自动装配 2.手动装配 2.1 基于xml装配 2.1.1 构造方法 <!-- 构造方法注入<constructor-arg>name:参数名type:类型value: --> <bean id"user" class"g_xml.constructor.User"><constructor-arg name"id…

windows下实现自己的第一个python脚本文件并.exe运行

前言 python可以做很多事情&#xff0c;比如知乎上的回答&#xff0c;每天来到公司都要打开AS&#xff0c; QQ和微信,为了省事决定用python写一个简单的脚本来实现。。脚本内容只有几行,python的代码真的好简洁。。。 import os os.startfile("C:\Program Files (x86)\Ten…

C++中引用()基础认识

对于习惯使用C进行开发的朋友们&#xff0c;在看到c中出现的&符号&#xff0c;可能会犯迷糊&#xff0c;因为在C语言中这个符号表示了取地址符&#xff0c;但是在C中它却有着不同的用途&#xff0c;掌握C的&符号&#xff0c;是提高代码执行效率和增强代码质量的一个很好…

linux无法访问443端口,linux – 为什么我无法在Ubuntu上ping端口443?

我通过iptables打开了端口443&#xff1a;pkts bytes target prot opt in out source destination45 2428 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/06 1009 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80141 10788 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:220 0 AC…

MediaWiki安装配置(Linux)【转】

阅读目录 2.1 本例子的安装环境如下&#xff1a;转自&#xff1a;http://blog.csdn.net/gao36951/article/details/43965527 版权声明&#xff1a;本文为博主原创文章&#xff0c;未经博主允许不得转载。 目录(?)[-] 1MediaWiki简介 2MediaWiki安装21 本例子的安装环境如…

提高编程水平的一段必经之路,研读官方文档

刚才看了 论坛里 jinxfei 的十年总结&#xff08;14&#xff09;&#xff1a;从CS转向BS, 说实话&#xff0c;大部分内容我没有太仔细的看&#xff0c;不过如下的一段引起了我的注意&#xff1a; 真正让我心里有底的&#xff0c;还是在看了官方文档之后&#xff1a;http://str…

在Asp.net core返回PushStream

最近用asp.net core webapi实现了一个实时视频流的推送功能&#xff0c;在Asp.net中&#xff0c;这个是通过PushStreamContent来实现的。 基于对asp.net core的知识&#xff0c;随手写了一个&#xff08;要求控制器继承自Controller基类&#xff09; [HttpGet] public async Ta…

顺序栈的代码实现

栈是一种限定只在表尾进行插入或删除操作的线性表&#xff0c;栈也是线性表。表头称为栈的底部,表尾称为栈的顶部,表为空称为空栈。 栈又称为后进先出的线性表,栈也有两种表示:顺序栈与链式栈。顺序栈是利用一组地址连续的存储单元。依次存放从栈底到栈顶的数据元素。 #includ…

Linux5观察doc目录并截屏,linux截屏命令

linux系统我们有时需要用到截屏功能&#xff0c;下面由学习啦小编为大家整理了linux截屏命令的相关知识&#xff0c;希望对大家有帮助!linux截屏命令详解import检测&#xff1a;import --versionimprot安装&#xff1a;sudo apt-get install importimport常用命令&#xff1a;1…

eclipse+tomcat开发web程序

环境&#xff1a;windows 7Eclipse Java EE IDE for Web Developerstomcat 7.02 插件&#xff1a;tomcatPluginV321.zip 一.配置Tomcat插件 我们创建一个myplugins文件夹用于存放插件&#xff0c;myplugins位于D:/Program Files/J2EE目录下。eclipse安装路径为&#xff1a;D:/P…