Ads 468x60px

##EasyReadMore##

26 1月, 2018

shell script 實現 scp 自動登錄抓取檔案

Expect是一個用來處理交互的命令。借助Expect,我們可以將交互過程寫在一個腳本上,使之自動化完成。形象的說,ssh登錄,ftp登錄等都符合交互的定義。下文我們首先提出一個問題,然後介紹基礎知四個命令,最後提出解決方法。
# 條件 expect:
sudo apt-get -f install expect


#!/bin/bash
TargetIP="212.39.38.4"

expect -c "
set timeout 2
spawn scp root@${TargetIP}:/tmp/restart_ap.log . 
    expect {
        \"*assword\" {set timeout 300; send \"ecs2018gw\r\";}
        \"yes/no\" {send \"yes\r\"; exp_continue;}
          }
    expect eof"  | tee log.txt
cat restart_ap.log

命令解說:

  \r:        換行
timeout: 默認是10秒,-1 --沒有timeout
send:        用於向進程發送字符串
spawn:      啟動新的進程
interact:    允許用戶交互
exp_continue: 繼續執行下面的匹配
tee log.txt : 結果導至 log.txt

Refer:

  使用expect實現scp ssh自動輸入密碼登入 - Linux主機伺服器 -  Linux主機伺服器架設.維護 - https://goo.gl/QB2v7t
  linux expect詳解(ssh自動登錄) - 懶惰的肥兔- 博客園 - https://goo.gl/1vb5FL
Expect中的timeout设定 - super119 - 博客园 - https://goo.gl/QctdCg

0 意見:

張貼留言

 
Blogger Templates