linux 腳本 expected,Linux | shell與expect結合使用

在linux操作系統下,使用腳本自動化,一般由兩種方案。

方案一:telnet+ftp

方案二:ssh+scp+expect。

以下主要使用ssh+scp+expect為例進行說明使用方式。

第一步:安裝expect:yum -y install expect

第二步:驗證,執行expect是否正確

第三步:編寫腳本ssh_exec(){

ip=$1

user=$2

passwd=$3

cmdstr=$4

/usr/bin/expect <

set time 10

spawn ssh $user@$1

expect {

"*yes/no" { send "yes\r"; exp_continue}

"*password:" {send "$passwd\r"}

}

expect "*#"

expect "*#"

send "$cmdstr\r"

expect "*#"

send "exit\r"

expect eof

EOF

}

function scp_get () {

local ip=$1

local user=$2

local passwd=$3

local src=$4

local dst=$5

[ -z "$ip" -o -z "$passwd" ] && return 1

/usr/bin/expect << EOF

proc remote_exec {ip passwd src dst} {

spawn scp \$user@\$ip:\$src \$dst

exp_internal 0

expect {

"yes/no" { send "yes\\r";exp_continue}

"*password:" {send "\$passwd\\r"}

}

expect eof

}

remote_exec "$ip" "$user" "$passwd" "$src" "$dst"

EOF

}

#從本地服務器復制到遠程服務器

function scp_put () {

local ip=$1

local user=$2

local passwd=$3

local localfile=$4

local dst=$5

[ -z "$ip" -o -z "$passwd" ] && return 1

/usr/bin/expect << EOF

proc remote_exec {ip passwd localfile dst} {

spawn scp \$localfile \$user@\$ip:\$dst

exp_internal 0

expect {

"yes/no" { send "yes\\r";exp_continue}

"*password:" {send "\$passwd\\r"}

}

expect eof

}

remote_exec "$ip" "$user" "$passwd" "$localfile" "$dst"

EOF

}

ssh_exec 192.168.1.2 root 111111 'df -h'

scp_get 192.168.1.2 root 111111 '/root/test.txt' '/opt/'

代碼說明:

第四步:對腳本授權,執行:chmod -R 755?script.sh

第五步:腳本執行,./script.sh ?(備注:shell+expect腳本,不能使用sh script.sh執行,只能采用./script.sh執行)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/395538.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/395538.shtml
英文地址,請注明出處:http://en.pswp.cn/news/395538.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

[Swift]LeetCode246.對稱數 $ Strobogrammatic Number

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★?微信公眾號&#xff1a;山青詠芝&#xff08;shanqingyongzhi&#xff09;?博客園地址&#xff1a;山青詠芝&#xff08;https://www.cnblogs.com/strengthen/&#xff09;?GitHub地址&a…

C++中父類的虛函數必需要實現嗎?

一、情景 C中父類的虛函數必需要實現嗎&#xff1f; class Vir{ public:virtual void tryVirtual(); };class CVir:public Vir{ public:void tryVirtual(){std::cout<<"CVir"<<std::endl;} };二、說明 &#xff08;1&#xff09;在main函數中&#xff0c…

解決新浪微博API調用限制 突破rate_limit_status瓶頸

新浪微博開放平臺API的調用和TWITTER接口一樣&#xff0c;都是受限的&#xff0c;以小時為單位進行限定。 他有兩個限制原則 1.用戶不登錄基于IP的限制&#xff0c;每小時1000次 2.用戶登錄了基于用戶的限制&#xff0c;每小時1000次 如果應用是用戶不登錄的那么就是對IP進行限…

chrome前端開發工具_精通Chrome開發人員工具:更高級別的前端開發技術

chrome前端開發工具by Ben Edelstein通過本愛德斯坦 You may already be familiar with the basic features of the Chrome Developer Tools: the DOM inspector, styles panel, and JavaScript console. But there are a number of lesser-known features that can dramatica…

linux給文件夾圖標,linux – 如何在GNOME中以編程方式設置自定義文件夾圖標?

我終于想出了如何做到這一點&#xff01;這是一個在標準Gnome環境中工作的Python腳本&#xff1a;#!/usr/bin/env pythonimport sysfrom gi.repository import Gioif len(sys.argv) not in (2, 3):print Usage: {} FOLDER [ICON].format(sys.argv[0])print Leave out ICON to u…

jQuery序列化表單為JSON對象

[html] view plaincopy <form id"myform"> <table> <tr> <td>姓名:</td> <td> <input type"text" name"name" /> </td> </tr> …

sys模塊

與python解釋器交互的模塊 sys.argv 命令行參數List&#xff0c;第一個元素是程序本身路徑 sys.exit(n) 退出程序&#xff0c;正常退出時exit(0),錯誤退出sys.exit(1) sys.version 獲取Python解釋程序的版本信息 sys.path 返回模塊的搜索路徑…

李開復:年輕人該比誰更拼命嗎?

李開復:年輕人該比誰更拼命嗎&#xff1f; IT職場 cricode 4個月前 (04-02) 951℃ 0評論 我年輕的時候是最不注重睡眠的&#xff0c;我記得在我讀大學的時候每次要考試就因為平時玩耍太多了&#xff0c;每次要考試的時候就會灌咖啡&#xff0c;有時候一個晚上可以喝十杯咖啡不…

linux命令無視錯誤,llinux 的一些命令和錯誤

sudo tar -zxvf ./hadoop-2.6.0.tar.gz -C /usr/local # 解壓到/usr/local中source ~/.bashrc # 使變量設置生效sudo useradd -m hadoop -s /bin/bash 創建新用戶sudo adduser hadoop sudo 可為 hadoop 用戶增加管理員權限sudo mv ./hadoop-2.6.0/ ./hadoop # 將文件…

假設檢驗方差未知_設計云數據庫時如何處理未知數并做出假設

假設檢驗方差未知by Rick Mak麥瑞克(Rick Mak) 設計云數據庫時如何處理未知數并做出假設 (How to handle unknowns and make assumptions when designing a cloud database) 場景&#xff1a;鞋盒還是社交應用&#xff1f; (Scenario: Shoebox or social app?) Say you’re a…

SQL校驗優化

我的思路只能查當前的&#xff1a; ----校驗此行訂單是否已導入&#xff0c;若已導入則提示訂單號并Return -- IF EXISTS (SELECT 1 FROM DOC_Order_Header b LEFT JOIN tblData a -- ON -- a.ConsigneeID b.Consig…

nat64 dns64 linux 內核支持,搭建NAT64/DNS6實現IPv4/v6轉換

NAT64采用tayga實現&#xff0c;DNS64采用bind9.8實現。1 平臺搭建平臺為ubuntu12.04 Desktop版本。正常安裝即可。2 NAT64(tayga)2.1 安裝在終端模式下輸入sudo apt-get install tayga2.2 配置2.2.1 相關設置sudo gedit /etc/tayga.conf按照說明配置&#xff0c;目前實現方案不…

React學習筆記(持續更新)

2.2頁面加載過程 1.資源加載過程&#xff1a;URL->DNS查詢->資源請求->瀏覽器解析 ①URL結構&#xff1a;http://www.hhh.com:80/getdata?pid1#title[協議://域名&#xff1a;端口/路徑?參數#哈希] ②DNS查詢&#xff1a;瀏覽器<--&#xff08;ip&#xff09;&am…

2年工作經驗進 初創公司_溝通是關鍵:通過兩家初創公司獲得的成長經驗教訓+找工作...

2年工作經驗進 初創公司by Niki Agrawal通過尼基阿格勞瓦爾(Niki Agrawal) 溝通是關鍵&#xff1a;通過兩家初創公司獲得的成長經驗教訓找工作 (Communication is key: growth lessons learned through two startups a job hunt) It’s been a crazy two years. I founded tw…

Hibernate問題淺析

1、什么是SessionFactory&#xff1f;什么是Session&#xff1f;httpsession和hibernate的session的有什么區別&#xff1f;SessionFactory接口負責初始化Hibernate。它充當數據存儲源的代理&#xff0c;并負責創建Session對象。這里用到了工廠模式。需要注意的是SessionFactor…

Oracle中SQL語句學習五(統計分組語句group by和having)

oracle&#xff08;41&#xff09; 在 應用系統開發中&#xff0c;進行需要統計數據庫中的數據&#xff0c;當執行數據統計時&#xff0c;需要將表中的數據進行分組顯示&#xff0c;在統計分組中是通過group by子句、分組函數、having子句共同實現的。其中group by子句用于指定…

linux系統去吧,要開始另一個linux操作系統的嘗試了,說說我以前的ubuntu吧

我想&#xff0c;除了嘗試一下ubuntu的神奇魅力的同時&#xff0c;我應該去體驗一下RedHat的神奇吧&#xff01;馬上就要告別ubuntu了&#xff0c;我想把我的部分使用經歷和大家分享分享&#xff01;首先&#xff0c;無論是ubuntu8.04、10.04還是10.1的效果都是很好的&#xff…

課程編碼查詢_付出還是不付出:生活中最好的事情(例如編碼課程)是否免費?...

課程編碼查詢by Rick West由里克韋斯特(Rick West) 付出還是不付出&#xff1a;生活中最好的事情(例如編碼課程)是否免費&#xff1f; (To pay or not to pay: are the best things in life — like coding courses — free?) Recently, I’ve been working on a project tha…

做開發十年,我總結出了這些開發經驗

本文由云社區發表,原文轉載地址:https://www.cnblogs.com/qcloud1001/p/10218876.html 在一線做了十年的開發&#xff0c;經歷了網易、百度、騰訊研究院、MIG 等幾個地方&#xff0c;陸續做過 3D 游戲、2D 頁游、瀏覽器、移動端翻譯 app 等。 積累了一些感悟。必然有依然幼稚的…

2016年4月 TIOBE 編程語言排行榜

4月頭條: Visual Basic 正在漸行漸遠 COBOL, BASIC 和 FORTRAN 很長一段時間作為主力開發語言被使用。有很多軟件使用這些語言來編寫&#xff0c;并且發展的不亦樂乎。然而經過多年的發展&#xff0c;COBOL和FORTRAN逐漸被拋棄&#xff0c;而得益于微軟的存在&#xff0c;BASIC…