自動Telnet遠程登陸命令

來源:互聯網
上載者:User

標籤:des   style   blog   color   使用   io   

    有些時候,在面對開發機的時候,不斷的telnet和不斷的command自己的命令確實非常麻煩,需要一些自動化的測試或者自動部署的需求。然而面對telnet很多同學都跟我一樣一開始覺得無法通過管道等傳使用者名稱和密碼給telnet進行自動化執行。但其實很是有解決辦法的,目前解決辦法大致分一共有兩種,一種是用第三方的expect這個命令,它可以互動根據終端返回的資訊可以在你事先設定好的遊戲規則之下進行命令,比如expect "Hello", send "Hello, too",表示當終端返回Hello的時候我就返回Hello,too,不然就用其中的set timeout進行逾時等待。具體的用法同學可以參考相關細節,總之,expect絕對是伺服器管理員的利器,如果你有空,確實可以抽空好好學習一下這個命令。但麻煩的就是它不是系統標配的,需要後期安裝。

    第二種方法比較簡單,有些同學可能會跟我一樣,想著相容性方面,比如我這個指令碼有可能會給我團隊的隊友一起使用,難道要求他們都去裝expect嗎?有沒有簡單的辦法可以讓shell來幫我們進行telnet並自動執行一些簡單的命令呢?答案是有的,那就是利用管道,echo,telnet的三者結合,先看以下demo.

#!/bin/bash#==============================================# Author: Ricky.k# Description: Auto telnet and run command#==============================================   echo "My own command..." &&(sleep 1; echo "user";  sleep 1; echo "password";  sleep 1; echo "cd /usr/local";  sleep 1; echo "./test.sh";  while [[ true ]]; do      sleep 1;  done;) | telnet 192.168.1.1

可以看到,在輸入完自己命令之後,可以通過小括弧(用大括弧需要注意左邊第一個括弧和第一個命令有一個空格)將命令包起來,這樣整個的管道就是對其中各個命令的全部起作用,利用echo,將使用者名稱,密碼,以及你要輸入的命令通過管道傳給telnet,即實現了自動化的telnet指令碼命令實現。同時需要注意,在最後一個命令(非sleep)之前,如果直接傳給telnent,你會發現命令根本就沒有執行完或者壓根就沒執行就被你取消連結了,這個時候你需要用while迴圈或者sleep一個比較大的值來讓它有時間進行命令響應,這也是需要考慮的。

    telnet自動化並沒有我們想的這麼複雜,用用簡單命令一樣可以實現這些功能,也反應了UNIX經典的設計哲學,通過管道和命令組裝,你就擁有了世界上最好的武器。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.