使用腳本自動登錄 ssh & 使用 alias 進行命令簡化

腳本高效方便,無論是使用 linux 上的簡單的 shell 腳本還是 python 寫的稍大的程序,都可以自動完成或簡化很多繁瑣的工作。這裏介紹一些簡單的 Ubuntu 腳本。

ssh 登錄阿里雲主機

參考教程已經找不到了,這裏介紹廣泛使用的 expect 包。

常規的登錄流程:

ssh user@10.10.10.10
user@10.10.10.10's password: **
[user@xxxx ~]#
  1. 首先安裝所需的包 expect:

    sudo apt update
    sudo apt install expect
  2. 然後新建文件 auto-ssh.sh

  3. 寫入腳本

    
    #! /usr/bin/expect
    
    
    spawn ssh user@10.10.10.10
    expect "*password*"
    
    send "你的密碼\r\n"
    
    interact
  4. 保存退出,修改權限

    chmod +x ./auto-ssh.sh
  5. 測試腳本

    ./auto-ssh.sh

    此時應該可以正常地登錄了。

關於 ssh 登錄安全性

很顯然,將密碼寫在腳本中不是很安全的做法,如果你很在意這一點,又想要簡化登錄流程,其實還有更好的方法:設置 SSH 通過密鑰登錄

我在 Windows 上使用 Putty 客戶端進行登錄,就是採用了公私鑰認證的方法,簡單方便,這裏不再細述。

使用 alias 設爲常用命令

完成腳本後,如果每次使用都需要找到腳本文件再執行,效率仍然比較低下。我們再利用 linux 上的 alias 命令,將腳本的執行設置爲簡單的命令。

  1. 關於 alias 命令

    可以參考這裏:alias命令,簡而言之就是爲指令起個別名,也可以直接指向腳本。

    直接運行 alias 命令,你可以看到當前存在的別名設置列表。

  2. 設置 alias

    假設腳本的路徑是 ~/commands/auto-ssh.sh~ 即用戶目錄,通常代表的是 /home/用戶名,以 root 用戶登錄時在根目錄的 /root下),在終端輸入命令:

    alias a-sh='~/commands/auto-ssh.sh'

    這樣,你就在任何目錄下輸入命令 a-sh 來執行這個腳本了。

  3. 寫入 .bashrc 文件

    如果僅僅是在終端執行 alias 命令,下次開機時會發現設置的命令已經失效了,因此我們需要將這個命令寫入 ~/.bashrc 文件。

    可以在 ~/.bashrc 文件中查找 alias,應該可以找到已經存在的別名設置,將你自定義的別名命令添加到下面即可。

在腳本中輸入 sudo 密碼

有時在執行腳本的時候,會出現因爲權限不足需要輸入 sudo 密碼的情況,可以通過簡單的命令來自動輸入。當然,如果你不希望自己的密碼寫入腳本,這個技巧也是無用的

轉自 ubuntu運行sh腳本sudo自動輸入密碼,有刪改。

  1. 可以採用文本塊輸入重定向:

    
    #! /bin/bash
    
    sudo -S apt update << EOF 
    你的密碼
    EOF
  2. 也可以使用管道:

    echo 你的密碼 | sudo -S apt update

-S 參數

man sudo

描述:

-S, –stdin
Write the prompt to the standard error and read the password from the standard input instead of using the terminal device. The password must be followed by a newline character.

參數將錯誤輸出和密碼讀入定位到標準輸入輸出,不再與終端設備交互,密碼需要在新的一行中傳入。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章