1. 程式人生 > >shell指令碼實現連線遠端伺服器(ECS)

shell指令碼實現連線遠端伺服器(ECS)

本篇文章主要使用expect指令碼來實現自動連線遠端伺服器並實現互動,不會大篇幅介紹expect的用法,有興趣的讀者可以自己瞭解,expect是個很強大的實現自動化互動的工具哦~~

程式碼示例

#!/usr/bin/expect
set timeout 10
set password 123456
spawn ssh [email protected]

expect {
    "(yes/no)?" {
        send "yes\r";
        expect "password:";
        send "${password}\r";
        exp_continue
; } "password:" { send "${password}\r"; exp_continue; } } interact
  • 第一行的 #!/usr/bin/expect 是告訴系統在執行這個指令碼的時候用哪個命令來執行,這邊是用expect,是一個類似bash和sh的shell

  • 第二行 set timeout 10 設定超時時間為10s

  • 第三行 set password 123456 定義了一個變數 password,這個變數記錄了登陸遠端伺服器的密碼

  • 第四行 spawn ssh [email protected] 呼叫 spawn

    命令來執行一個系統命令。spawn是expect shell的內建命令,只有在expect環境下才可以使用。這行程式碼的功能就是通過ssh連線遠端ECS

  • 6~17 行用了一個 expect 命令,可以將這個命令理解為期待shell中輸出結果中包含什麼關鍵字

    • 如果包含的是 (yes/no)? 則表示是第一次連線這個遠端伺服器,需要手動確認是否儲存生成的金鑰到 ~/.ssh/know_hosts 當中,通過send命令輸出 yes 到shell中。之後再次期望shell的輸出結果中包含 password:關鍵字,再用send命令輸出密碼。
    • 如果包含的是 password: 則表示不是第一次連線這個遠端伺服器,直接用send輸出密碼即可

正常如果網路正常,伺服器ip、使用者名稱、密碼正確的話,執行上面的指令碼就可以自動連線到遠端ecs了。(注意使用的時候將上述使用者名稱、密碼、ip替換成自己的)

相關推薦

shell指令碼實現連線遠端伺服器ECS

本篇文章主要使用expect指令碼來實現自動連線遠端伺服器並實現互動,不會大篇幅介紹expect的用法,有興趣的讀者可以自己瞭解,expect是個很強大的實現自動化互動的工具哦~~ 程式碼示

Mac連線遠端伺服器Linux以及檔案上傳、下載命令

在windows上,用xshell+xftp就可以很方便的操作遠端linux伺服器了。 而這2個軟體是沒有mac版的,所以在macOS下,是怎樣實現對遠端linux伺服器的操作的呢?   使用ssh連線遠端主機 ssh [email protected] 使用

Mac使用SSH免密碼連線遠端伺服器DigitalOcean

起因 作為Github學生包裡面幾個比較實用的東西,DigitalOcean提供給我們一張50美刀的券,不過需要用PayPal充值5美刀才能啟用,大概就三十塊錢吧。 以前有邀請他人送10美金的活動。但現在優惠提升了!!被邀請者六十天內有100美金的額度可以用,就

shell指令碼實現mysql自動還原linux

#!/bin/bash #主機地址 host="localhost"   #mysql使用者名稱 id="root"       #mysql祕密        pwd="sanyue"dbs=$(echo "show databases;" | mysql -u$id -

java實現 連線遠端伺服器 執行Linux命令 並獲取 執行返回的結果

情景:要通過java連線伺服器,並執行指令碼命令 得到 返回的結果 package com.ideal.openapi.util; import com.jcraft.jsch.*; import org.slf4j.Logger; import org.slf4j.LoggerFacto

Jenkins使用shell指令碼部署到遠端伺服器步驟

首先需要去 系統管理->管理外掛,選擇可選外掛選項卡,搜尋並找到 SSH Slaves plugin 外掛,點選下載安裝 安裝完成後也許需要重啟Jenkins 然後你可以在系統管理中找到剛安裝完成的功能: 輸入主機IP,埠號,使用者名稱及密碼就可以

mac的Finder連線遠端伺服器阿里雲伺服器

最近租了一個阿里雲伺服器,想用mac的Finder遠端連線下,但是折騰了好久。。。弄了一個下午,終於成功,簡單記錄下。 1、簡單瞭解下mac的finder訪問遠端的伺服器 finder支援的協議有

shell指令碼批量獲取遠端伺服器多個專案的日誌

shell批量獲取日誌 最近日誌比較多, 而且壓縮了日誌, 並沒有上ELK. 臨時需要來獲取專案的執行日誌, 並且解壓呈現出來. ***1. 需求環境 apache/nginx 並且指定一個本地伺服器的log服務作為web服務對外的路徑. 這裡我用的本

jmeter實現本地控制端通過分散式遠端伺服器Linux併發效能測試

一、背景: 之前在Jmeter外掛監控伺服器效能一篇中說到,在非GUI環境中監控時為了儲存監控資料需要修改jmeter指令碼,並且每次通過施壓機(遠端伺服器,非GUI環境)來壓測時都要將jmeter指令碼上傳然後在伺服器上通過命令列啟動,測試完成後再把結果資料下載到

linux 下使用expect編寫shell 指令碼互動訪問遠端伺服器

使用命令列登陸遠端伺服器一般需要ip地址以及登陸密碼等,每次都手動輸很不方便,expect可以滿足自動輸入密碼。下面是詳細的介紹: 首先安裝expect: 我用的是ubuntu14.04,使用sudo apt-get install expect即

SSH連線遠端伺服器Linux-Centos以及出現問題解決

$ ssh -l 使用者名稱 XXX.XXX.XXX.XXX 出現以下問題: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @    WARNING: REMOTE HOST IDENTIF

ASP.NET上傳檔案到遠端伺服器HttpWebRequest

/// <summary> /// 檔案上傳至遠端伺服器 /// </summary> /// <param name="url">遠端服務地址</param> /// <param name="pos

FileZilla連線Linux伺服器Ubuntu

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

伺服器ECS初體驗--選購方案

什麼是雲伺服器? 雲伺服器(Elastic Compute Service, 簡稱ECS),是一種簡單高效,處理能力可以彈性伸縮的計算服務。 來源:https://edu.aliyun.com/lab/courses/4f5e67eb1b254fe2869dc14ca4f648db/deta

執行shell指令碼的四種方式

原文網址:https://www.jb51.net/article/53924.htm 這篇文章主要介紹了Linux中執行shell指令碼的4種方法,即總結在Linux中執行shell指令碼的4種方法。 前提:bash shell 指令碼的方法有多種,現在作個小結。假設我們編寫好的shell指令碼的檔名為

Shell指令碼學習指南讀書筆記

第1章 背景知識略 第2章 入門 編譯型語言 優點:高效 缺點:多半運作於底層,處理位元組、整數或其他機器層級的物件(C++中就很難將一個目錄所有檔案複製到另一個目錄中) 指令碼程式語言 通常是解釋型的

java連線sftp伺服器 隨筆

網上有很多成型的例子,在這裡提供幾個不錯的連線 網sftp伺服器上傳檔案 需藉助jsch.jar包   JSch 實現了三種傳輸模式 1,完全覆蓋模式 2,恢復模式,(類似於斷點上傳)因外部原因導致檔案上傳中斷,下次上傳時會接著上次的繼續上傳 3,追加模式,若發現檔案已經

配置客戶端連線遠端資料庫oracle

在使用者輸入sqlplus system/[email protected]後,sqlplus程式會自動到sqlnet.ora檔案中找NAMES.DEFAULT_DOMAIN引數,假如該引數存在,則將該引數中的值取出,加到網路服務名的後面,即此例中你的輸入由sqlplus system/[email

阿里雲伺服器ECS實戰--安全組策略配置埠放行

什麼是阿里雲安全組策略? 阿里雲安全組是一種虛擬防火牆,也是阿里雲處於安全考慮的一種策略,一臺ECS雲伺服器例項必須至少屬於一個安全組。我們知道伺服器的各種服務要依賴埠來實現,我們可以將安全組想象成伺服器各個埠的開關,預設建立購買的ECS雲伺服器,阿里雲預設只開

shell指令碼從入門到精通初級之入門篇

一、變數 1. 環境變數 #!/bin/bash # 全域性變數 echo "User Info:" echo "user: $USER" echo "UID : $EUID" echo "home: $HOME" echo “$HOSTNAME” 2. 使用者變數