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.pswp.cn/news/453376.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/453376.shtml
英文地址,請注明出處:http://en.pswp.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…