1. 程式人生 > >linux expect, spawn用法小記

linux expect, spawn用法小記

使用expect實現自動登入的指令碼,網上有很多,可是都沒有一個明白的說明,初學者一般都是照抄、收藏。可是為什麼要這麼寫卻不知其然。本文用一個最短的例子說明指令碼的原理。 
  指令碼程式碼如下: 
  ############################################## 
  #!/usr/bin/expect 
  set timeout 30 
  spawn ssh -l username 192.168.1.1 
  expect "password:" 
  send "ispass\r" 
  interact 
  ############################################## 

  1. [#!/usr/bin/expect] 
  這一行告訴作業系統腳本里的程式碼使用那一個shell來執行。這裡的expect其實和linux下的bash、windows下的cmd是一類東西。 
  注意:這一行需要在指令碼的第一行。 
  2. [set timeout 30] 
  基本上認識英文的都知道這是設定超時時間的,現在你只要記住他的計時單位是:秒 
  3. [spawn ssh -l username 192.168.1.1] 
  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 "ispass\r"] 
  這裡就是執行互動動作,與手工輸入密碼的動作等效。 
  溫馨提示: 命令字串結尾別忘記加上“\r”,如果出現異常等待的狀態可以核查一下。 
  6. [interact] 

  執行完成後保持互動狀態,把控制權交給控制檯,這個時候就可以手工操作了。如果沒有這一句登入完成後會退出,而不是留在遠端終端上。如果你只是登入過去執行 
  #!/usr/bin/expect #注意安裝的路徑,不確定 whereis expect 一下 
  # Change a login shell to bash 
  set user [lindex $argv 0] 
  spawn bash $user 
  expect "]:" 
  send "/bin/bash " 
  expect eof 
  exit

相關推薦

linux expect, spawn用法小記

使用expect實現自動登入的指令碼,網上有很多,可是都沒有一個明白的說明,初學者一般都是照抄、收藏。可是為什麼要這麼寫卻不知其然。本文用一個最短的例子說明指令碼的原理。   指令碼程式碼如下:   #####################################

[轉載] linux expect spawn用法

linux expect spawn的用法 https://www.cnblogs.com/jason2013/articles/4356352.html 首先,要安裝expect,linux expect的安裝 1.安裝相應的包     yum ins

linux expect spawn用法

命令在功能:我們通過Shell可以實現簡單的控制流功能,如:迴圈、判斷等。但是對於需要互動的場合則必須通過人工來干預,有時候我們可能會需要實現和互動程式如telnet伺服器等進行互動的功能。而Expect就使用來實現這種功能的工具。 首先,要安裝expect,linux

【轉】shell expect spawnlinux expect 用法小記 看著舒服點

ssh username 英文 認識 exe 無法找到 usr 過去 操作 使用expect實現自動登錄的腳本,網上有很多,可是都沒有一個明白的說明,初學者一般都是照抄、收藏。可是為什麽要這麽寫卻不知其然。本文用一個最短的例子說明腳本的原理。 腳本代碼如下:  #####

shell expect spawnlinux expect 用法小記 看著舒服點

 使用expect實現自動登入的指令碼,網上有很多,可是都沒有一個明白的說明,初學者一般都是照抄、收藏。可是為什麼要這麼寫卻不知其然。本文用一個最短的例子說明指令碼的原理。  指令碼程式碼如下:   #####################################

expect(spawn) 自動化git提交和scp拷貝---centos(linux)

在進行SCP檔案拷貝中,往往需要進行使用者密碼的輸入,即使用者互動。若採用自動化指令碼的方式進行,則可用以下方式 #!/usr/bin/expect # 設定引數 set src [lindex $argv 0] set dest [lindex $argv 1] set passwor

linux expect的send,expect,spawn,interact

Expect是一個用來處理互動的命令。藉助Expect,我們可以將互動過程寫在一個指令碼上,使之自動化完成。形象的說,ssh登入,ftp登入等都符合互動的定義。下文我們首先提出一個問題,然後介紹基礎知四個命令,最後提出解決方法。 問題 如何從機器A上ssh到機器B上,然

Linux中wget用法

wordpress 用戶名 targe 是否 之前 get robot c斷點續傳 常用語法 Wget簡介:Linux系統中wget是一個下載文件的工具,它用在命令行下。對於Linux用戶是必不可少的工具,我們經常要下載一些軟件或從遠程服務器恢復備份到本地服務器。wget支

linux find的用法

小寫 gin ati 訪問 大寫 fstab 連接 大小 txt文件 一般格式: ·find path -option [ -print ] [ -exec -ok command ] {} \; 說明: #-print 將查找到的文

linux之sed用法

sil 資料 log sed的用法 單位 welcome 數據 讀取 local sed是一個很好的文件處理工具,本身是一個管道命令,主要是以行為單位進行處理,可以將數據行進行替換、刪除、新增、選取等特定工作,下面先了解一下sed的用法 sed命令行格式為:

Linux命令CURL用法

自動 傳輸 讀取 下載文件 app 執行c 特殊字符 在屏幕上 mmm Curl是一個命令行方式下傳輸數據的開源傳輸工具,支持多種協議包括:FTP,HTTP,HTTPS,IMAP,POP3,TELNET等。同樣支持HTTP POST方法,PUT方法,FTP上傳,cookie

nc用法小記

mon 定義 poi 用途 lua 技術分享 unix 顯式 版本 By francis_hao Jun 30,2017 ncat:連接和重定向套接字 概要 ncat [OPTIONS...] [hostname] [port] 描述 ncat 是一個集成

watch用法小記

www top .com align aps uri 同方 int 協議 By francis_hao Jun 30,2017 watch:周期性的執行一個一個程序,並全屏顯示輸出 概述 watch [options] command 描述 watch重

【轉載】linux之sed用法

span 變量 常用 tdi 選擇 包括 div 輸入 記得 linux之sed用法 原文地址:http://www.cnblogs.com/dong008259/archive/2011/12/07/2279897.html sed是一個很好的文件處理工具,本身是

at用法小記

ack groups src 令行 uid 擴展 3.0 其他 name By francis_hao Aug 22,2017 at – 設置稍後執行的作業。 概要 at [-V] [-f file] [-mMlv] timespec...at [-V] [-f

scanf函數用法小記

lur 忽略 match 過濾 std 12個 可用 cte turn By francis_hao Aug 26,2017 scanf – 輸入格式轉換 概述 #include <stdio.h>int scanf(const

Linux上SFTP用法

clas 使用 協議 put 一個 rmdir linux 操作 font SFTP簡介 sftp是一個交互式的文件傳輸協議,類似於ftp,但它進行加密傳輸,比ftp更安全。 SFTP用法 localhost>sftp [email protected]

linux nginx 基本用法

blue ima 不支持 執行 inux logs 目前 con col nginx -s reload -p <nginx環境目錄> -c <指定的配置文件> 其中-p -c 為可選,不寫為默認路徑和配置 在執行命令之前可通過 nginx -

linux中sed用法

命令一、sed命令介紹:1、含義:Stream Editor文本流編輯,sed是一個“非交互式的”面向字符流的編輯器。能同時處理多個文件多行的內容,可以不對原文件改動,把整個文件輸入到屏幕,可以把只匹配到模式的內容輸入到屏幕上。還可以對原文件改動,但是不會再屏幕上返回結果。2、功能:主要用來自動編輯一個或多個

Linux的date用法

con 命令參數 定時 顯示文件 shell腳本 輸出 風格 file option 顯示時間是個常用的命令,在寫shell腳本中也經常會用到與日期相關文件名或時間顯示。無論是linux還是windows下都是date命令。 Linux下date命令用法 date [OP