linux shell和expect自動互動混合編碼
因為使用到sftp,只能用互動方式輸入密碼,但是人工互動又不方便,想考慮自動,查詢資料發現expect方式可以實現
一、安裝expect
root 許可權下,yum安裝命令:
yum -y install expect
二、
#!/bin/bash pwd='123456' ls_date=`date +%Y-%m-%d` expire_me="R_rhp-report_ALL_daily_"${ls_date}".txt" curdir=$(cd $(dirname $0); pwd) echo $pwd echo $expire_me echo $curdir /usr/bin/expect <<-EOF spawn sftp[email protected]; expect { "[email protected]'s password:" {send_user $pwd;send "$pwd\r";exp_continue} "sftp>" {send "get $expire_me $curdir\rquit\r";exp_continue} } expect eof; EOF exit
解釋:
#!/bin/bash => shell指令碼執行,如果不需要shell,而是全部expect,則可以:#!/usr/bin/expect
/usr/bin/expect <<-EOF => 此處開始執行expect指令碼,記住EOF前面的“-”
expect中最關鍵的四個命令是send,expect,spawn,interact。
send:用於向程序傳送字串
expect:從程序接收字串
spawn:啟動新的程序
interact:允許使用者互動
1、spawn命令是Expect的初始命令,它用於啟動一個程序,之後所有expect操作都在這個程序中進行,如果沒有spawn語句,整個expect就無法再進行下去了
spawn sftp [email protected]; =>啟動expect操作程序
2、expect 是針對需要互動的地方進行自動傳送訊息,{ 大扣號前面必須要有空格,前面引號內的內容是互動介面等待輸入的匹配字串,{} 內的是互動輸入的內容,
a、send_user 等同於shell裡的echo 顯示用,
b、send 傳送資料,最後的\r必需,說明輸入密碼並回車了
c、exp_continue 繼續處理下一步命令
"kaifatest@reports.afilias.info's password:" {send_user $pwd;send "$pwd\r";exp_continue}
進入sftp後,需要獲取所需檔案並退出,因為都是在"sftp>"下面處理,所以兩天命令放一起:
"sftp>" {send "get $expire_me $curdir\rquit\r";exp_continue}
expect eof =>此命令和spawn 是匹配的,spawn程序結束後會向expect傳送eof,表示退出spwan
EOF 解除expect指令碼執行,跳出到shell執行環境
以下是手工命令操作步驟:
[[email protected] ~]$ sftp [email protected]
Connecting to reports.afilias.info...[email protected]'s password:
sftp>
相關推薦
linux shell和expect自動互動混合編碼
因為使用到sftp,只能用互動方式輸入密碼,但是人工互動又不方便,想考慮自動,查詢資料發現expect方式可以實現一、安裝expectroot 許可權下,yum安裝命令:yum -y install expect二、#!/bin/bash pwd='123456' ls_d
linux shell使用expect實現sftp的自動互動
<pre name="code" class="plain">vim exec_expect_sftp.sh #/usr/bin/expect -f #引數1 usrname 引數2 passwd 引數3 ip 引數4 dir set userna [linde
用expect實現shell指令碼的自動互動
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
python, linux shell 使用expect模組自動輸入密碼
Pexpect 是一個自動控制的 Python 模組,可以用來ssh、ftp、passwd、telnet 等命令列進行自動互動。 官方網站是 http://www.noah.org/ 通過它,可以實現類似 expect 的操作。 例如我們可以用它來寫python指令碼
從新手到系統管理員(一):理解Linux Shell和基本的Shell指令碼
本文由 [茶話匯] – [Qing] 編譯自 [Avishek Kumar] 轉載請註明出處 關於GNU/Linux的架構和shell所處的位置,圖片比語言表述的更加清楚,如下圖所示。 理解Linux Shell Shell:Shell是基於命令列的直譯器,它連線使用者和作業系統,允許通過編寫指令
如何理解Linux Shell和基本Shell指令碼語言?
理解Linux Shell: shell:一個命令列直譯器,通過執行命令或指令碼,幫助使用者與作業系統打交道。 process:程序,使用者執行的任務是程序,但程序不只是任務。 file:檔案放在硬碟上,包含使用者所有的資料。 x-windows(又稱windows):Linux的一種模式,使螢幕
linux shell 安裝模組自動跳過確認
我們在搭建專案執行環境時,往往會用到shell指令碼,不然每次安裝都去手動一行一行命令去敲,費時費力。 下面有一個例項指令碼,install.sh,內容如下(以Ubuntu為例,centos解決辦法一
linux shell ssh實現自動登入,並且執行一些操作並返回到當前主機
#!/usr/bin/expect -f #-------------------------------------------------- about us # product: monitorone # Author:matthew # Last Modified:
linux shell 和linux 命令的區別?windows shell 和 windows 命令呢?
shell翻譯成殼的意思,它是包裹在linux核心外層的,一個可通過一系列的linux命令對作業系統發出相關指令的人機介面。 shell可以通過其條件語句和迴圈語句等,把一系列linux命令結合在一起
Linux Shell--改變目錄/自動補齊/命令列的歷史記錄/快捷鍵
改變目錄 ‘cd’(改變目錄,change directory) ‘~’就是您的 home 目錄的簡寫形式。理論上,這也可以應用在命令’cd’上。無論當前路徑在哪裡,cd ~ 將回到您的 home 目錄。其實還可以簡化,只要鍵入 cd ,就可以返回 ho
使用expect實現shell自動互動
shell指令碼需要互動的地方可以使用here文件是實現,但是有些命令卻需要使用者手動去就互動如passwd、scp 對自動部署免去使用者互動很痛苦,expect能很好的解決這類問題。 expect的核心是spawn expect send set spawn 呼叫
shell 從命令列提示輸入,和自動輸入,自動互動
讓shell提示輸入一個變數,賦值個MY_FILE_NAME vim input.sh #!/bin/bash read -p "Please input a filename1:" MY_FILE
Linux中shell自動互動的使用
自動互動方法二 需求2中要求採用非互動的方式改變登入使用者密碼,嘗試用方法1,無法實現。 這時候聯想到互動資訊的另一個自動輸入方法,管道,通過echo + sleep + | 可以
實用指令碼----Linux下Jdk和Tomcat自動安裝shell指令碼總結
一、JDK 自動安裝指令碼 jdk自動安裝bash shell指令碼,截止今天(2014/10/15)親測可用: sudo su #切換到root許可權 mkdir /usr/local/java cd /usr/local/java #download jdk 1.7.67 wget --no-ch
使用spawn和expect實現自動互動
有時候我們使用命令列進行互動時,不想頻繁的做一些重複的事情,例如:每次ssh遠端登入時都需要輸入密碼。使用spawn和expect可以自動完成一些互動。 一個自動輸入密碼的簡單指令碼 #!/u
UNIX/LINUX使用expect實現人機自動互動功能
expect用法 [#!/usr/bin/expect] 這一行告訴作業系統腳本里的程式碼使用那一個shell來執行。這裡的expect其實和linux下的bash、windows下的cmd是一類東西。 注意:這一行需要在指令碼的第一行。 [
linux的shell自動互動
你瞭解Linux系統麼?你是Linux系統的應用者麼?如果你要學習linux,你可能會遇到Linux Shell自動互動問題,這裡將介紹Linux Shell自動互動的解決方法,在這裡拿出來和大家分享一下。 一、背景 shell指令碼在處理自動迴圈或大的任務方面可節省
實現Linux Shell自動互動的三種方法----本人備註
spawn su root expect password: send 123456r expect eof exit 測試通過,執行這個指令碼,直接從當前使用者登入到root使用者。 七、方法總結 方法一(重定向)簡單直觀,也經常有實際應用,但是在自動互動領域功能有限。 方法二(管道
linux shell的自動互動
1、使用expect工具,如: 1)自動登陸 #!/usr/bin/expect spawn ssh 使用者@IP expect { "yes/no" { send "yes\r"; exp_continue} "password:" { send "密碼\r";
Linux Shell自動互動的三種方法
四、自動互動方法一 自動互動最關鍵的就是互動資訊的自動輸入,首先聯想到檔案重定向,在shell程式設計中有這樣一種用法(參考Linux與UNIX SHELL程式設計指南 chapt 5.7):"command << delimiter 從標準輸入中讀入,直至遇