tft每日頭條

 > 生活

 > linux怎麼執行shell腳本

linux怎麼執行shell腳本

生活 更新时间:2024-11-27 16:38:44
概述

我們通過Shell可以實現簡單的控制流功能,如:循環、判斷等。但是對于需要交互的場合則必須通過人工來幹預,有時候我們可能會需要實現和交互程序如telnet服務器等進行交互的功能。而expect就使用來實現這種功能的工具。

expect是一個免費的編程工具語言,用來實現自動和交互式任務進行通信,而無需人的幹預。expect是不斷發展的,随着時間的流逝,其功能越來越強大,已經成為系統管理員的的一個強大助手。expect需要Tcl編程語言的支持,要在系統上運行expect必須首先安裝Tcl。

下面介紹一個通過expect來自動ssh連接的腳本,大家可以思考下裡面實現的邏輯。


expect基礎

在使用expect時,基本上都是和以下四個命令打交道:

linux怎麼執行shell腳本(詳解Linux中的expect用法--實現shell腳本自動交互)1

  • send命令接收一個字符串參數,并将該參數發送到進程。
  • expect命令和send命令相反,expect通常用來等待一個進程的反饋,我們根據進程的反饋,再發送對應的交互命令。
  • spawn命令用來啟動新的進程,spawn後的send和expect命令都是和使用spawn打開的進程進行交互。
  • interact命令用的其實不是很多,一般情況下使用spawn、send和expect命令就可以很好的完成我們的任務;但在一些特殊場合下還是需要使用interact命令的,interact命令主要用于退出自動化,進入人工交互。比如我們使用spawn、send和expect命令完成了ftp登陸主機,執行下載文件任務,但是我們希望在文件下載結束以後,仍然可以停留在ftp命令行狀态,以便手動的執行後續命令,此時使用interact命令就可以很好的完成這個任務。

需求:自動連接

執行:/mnt/auto_connect.exp IP password 時 密碼正确,則通過 ssh 連接到該 IP 主機,并保持登陸。


1.腳本内容:

# vim auto_connect.sh #!/bin/bash /usr/bin/expect << EOF //切換到expect環境 spawn ssh root@$1 //ssh連接IP expect { "yes/no" { send "yes\r";exp_continue } //确認連接 "password" { send "$2\r" } //輸入密碼 } Interact //保留 EOF //退出

linux怎麼執行shell腳本(詳解Linux中的expect用法--實現shell腳本自動交互)2


2.執行:

# chmod x auto_connect.sh //添加可執行權限 # sh auto_connect.sh 172.25.254.226 redhat //添加IP和密碼 spawn ssh [email protected] The authenticity of host '172.25.254.226 (172.25.254.226)' can't be established. ECDSA key fingerprint is eb:24:0e:07:96:26:b1:04:c2:37:0c:78:2d:bc:b0:08. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '172.25.254.226' (ECDSA) to the list of known hosts.

linux怎麼執行shell腳本(詳解Linux中的expect用法--實現shell腳本自動交互)3


如果大家能夠在工作中熟練的使用shell腳本就可以很大程度的提高工作效率,再搭配上expect,那麼很多工作都可以自動化進行,對工作的展開如虎添翼。如果你會Python的話,你的視野将會更加開闊,那個時候你又會“嫌棄”expect了。

後面小編會分享更多Linux方面内容,感興趣的朋友走一波關注哩~

linux怎麼執行shell腳本(詳解Linux中的expect用法--實現shell腳本自動交互)4

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved