腳本高效方便,無論是使用 linux 上的簡單的 shell 腳本還是 python 寫的稍大的程序,都可以自動完成或簡化很多繁瑣的工作。這裏介紹一些簡單的 Ubuntu 腳本。
ssh 登錄阿里雲主機
參考教程已經找不到了,這裏介紹廣泛使用的 expect 包。
常規的登錄流程:
ssh user@10.10.10.10
user@10.10.10.10's password: **
[user@xxxx ~]#
首先安裝所需的包 expect:
sudo apt update sudo apt install expect
然後新建文件
auto-ssh.sh
寫入腳本
#! /usr/bin/expect spawn ssh user@10.10.10.10 expect "*password*" send "你的密碼\r\n" interact
保存退出,修改權限
chmod +x ./auto-ssh.sh
測試腳本
./auto-ssh.sh
此時應該可以正常地登錄了。
關於 ssh 登錄安全性
很顯然,將密碼寫在腳本中不是很安全的做法,如果你很在意這一點,又想要簡化登錄流程,其實還有更好的方法:設置 SSH 通過密鑰登錄。
我在 Windows 上使用 Putty 客戶端進行登錄,就是採用了公私鑰認證的方法,簡單方便,這裏不再細述。
使用 alias 設爲常用命令
完成腳本後,如果每次使用都需要找到腳本文件再執行,效率仍然比較低下。我們再利用 linux 上的 alias 命令,將腳本的執行設置爲簡單的命令。
關於 alias 命令
可以參考這裏:alias命令,簡而言之就是爲指令起個別名,也可以直接指向腳本。
直接運行
alias
命令,你可以看到當前存在的別名設置列表。設置 alias
假設腳本的路徑是
~/commands/auto-ssh.sh
(~
即用戶目錄,通常代表的是/home/用戶名
,以 root 用戶登錄時在根目錄的/root
下),在終端輸入命令:alias a-sh='~/commands/auto-ssh.sh'
這樣,你就在任何目錄下輸入命令
a-sh
來執行這個腳本了。寫入 .bashrc 文件
如果僅僅是在終端執行 alias 命令,下次開機時會發現設置的命令已經失效了,因此我們需要將這個命令寫入
~/.bashrc
文件。可以在
~/.bashrc
文件中查找alias
,應該可以找到已經存在的別名設置,將你自定義的別名命令添加到下面即可。
在腳本中輸入 sudo 密碼
有時在執行腳本的時候,會出現因爲權限不足需要輸入 sudo 密碼的情況,可以通過簡單的命令來自動輸入。當然,如果你不希望自己的密碼寫入腳本,這個技巧也是無用的。
轉自 ubuntu運行sh腳本sudo自動輸入密碼,有刪改。
可以採用文本塊輸入重定向:
#! /bin/bash sudo -S apt update << EOF 你的密碼 EOF
也可以使用管道:
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.
參數將錯誤輸出和密碼讀入定位到標準輸入輸出,不再與終端設備交互,密碼需要在新的一行中傳入。