Tag: Shell Script

Shell Script 修改系統帳號密碼

在 Linux 要修改帳號密碼, 可以用 passwd 完成。passwd 需要從 stdin 輸入新密碼, 但很多情況需要用非互動的方式修改, 即一行指令修改密碼。例如用 Shell Script 建立新帳號後, 立即修改新用戶的密碼。以下會示範不用從 stdin 輸入新密碼的情況下, 用一行指令修改帳號密碼的方法。版本較新的 Linux 的 passwd 指令, 支援 –stdin 參數, 即不會要求輸入兩次新密碼作為確認, 這樣只要用 echo 指令將新密碼, 透過管線 …

Linux 檢視指令的執行時間

在 Linux 下要找出個別指令或 process 的執行時間, 可以用 GNU time 實現, 這個工具可以很簡單地測量指令的執行時間。而 “time” 指令已經內建在主要 Linux 發行版。要測試一個指令的執行時間, 只要在 time 指令後加上要測量的指令, 例如: # time ls 以下是輸出的例子: dir1 dir2 file1 file2 real 0m0.003s user 0m0.002s …

Linux 下的 &, &&, | 及 || 的用法

在 Linux 下執行指令, 很多時會用到 &, &&, | 及 ||, 以下是它們的用法:& 如果在指令後面加上 & 符別, 即表示指令在背景執行, 例如 my-script.sh &&& 用 “&&” 分開兩個指令, 即第一道指令執行成功後, 才會執行第二道指令, 例如 make && make install| 這是管線的符號, 即是將第一道指令的輸出, 作為第二道指令的輸入, …

Shell Script 使用 #!/usr/bin/env

在 Shell Script 的第一行稱為 shebang, shebang 由 “#!” 開頭, 並在後面加上解譯器的絕對路徑, 即類似:#!/bin/sh #!/bin/bash #!/usr/bin/perl #!/usr/bin/python如果 Shell Script 不同的平台執行, 指定的解譯器可能位置有所不同, 如果想增加 Shell Script 在不同 Unix Like 環璄的可流動性, 可以使用 /usr/bin/env 作為 shebang.使用方法只要在 /usr/bin/env …

Shell Script 產生亂數

Shell Script 提供了 $RANDOM 變數,直接用 echo 印出或調用已經可以產生亂數。用 $RANDOM 產生的隨機數會在 0 – 32767 之間,而每次使用 $RANDOM 後,它便會被定義一個新的數值,以下是使用例子: $ echo $RANDOM 這樣便會印出一個隨機數。以上方法雖然簡單,但最大的問題是不能定義隨機數的長度,因為 $RANDOM 只會產生介乎 0 – 32767 之間的數值。要定義亂數的長度,可以用 awk 來做,例如:以上定義了產生 6 個位長度的亂數,介乎 100000 …

Wrapper Script – 替現有指令擴充功能

Wrapper Script 在 Unix Like 環境十分常見,它不會重新建立一個新的程式,而是會讀取 input 後加入所需的功能,再將 input 直接傳送給現有的指令。以下是 wrapper script 的簡單例子:以上 Wrapper Script 實際上沒有甚麼用途,它只是將輸入直接傳送給 /root/bin/my-script.sh,所以執行以上 Wrapper 跟執行 /root/bin/my-script.sh 是沒有分別,因為沒有加入任何新功能。如果有用過 QMail 的應該會編輯過 daemontools 的 run script, 這個 run script …

Shell Script 自動登入 FTP 上下傳檔案

在 Linux Server 上要用 ftp 傳送檔案,可以用 ftp 指令手動完成,但如果需要經常對特定檔案用 ftp 上傳及下傳,可以用 Shell Script 自動連接到 ftp 伺服器並傳送檔案。以下是用 Shell Script 登入 ftp 伺服器的例子:以上 Shell Script 會自動登入 ftp.yourftp.server,並會上傳 filename.txt 到 ftp 伺服器。上面的 Shell Script …

Linux 產生隨機密碼

在 Linux 下要產生隨機密碼字串,可以用以下指令:執行後便會輸出一組 16 個字元的隨機密碼。要自訂密碼的長度,只需修改上面 head -c 16, 將 16 改成想要的密碼長度,例如要產生 8 個位的密碼,便改成:

rsync 透過 SSH 傳送及備份檔案

rsync 是很常用的檔案傳送工具,以下會介紹用 rsync + SSH 傳送檔案,並以 CentOS 7 作為測試環境。第一步先在 Server 產生一組 public SSH keys, 該 Client 端可以不用輸入密碼登入 SSH:現在可以將 public.key 的內容複制起來,可以用 cat 指令:將以上 public.key 內容複製後,登入到 Client 端,並儲到到 ~/.ssh/authorized_keys, 如果 .ssh/ 目錄不存在,需要手動建立並建立正確權限: …

解決 sudo: sorry, you must have a tty to run sudo

在 Linux 很多時都會用 sudo 以 root 身份執行指令,一般情況下執行 sudo 後需要輸入使用者密碼確認,但有些情況不能輸入密碼,例如 Shell Script, 在這種情況下系統記錄檔會出現以下錯誤:sudo: sorry, you must have a tty to run sudo出現問題的原因,是多數 Linux 發行版,預設使用 sudo 開啟了 requiretty,要解決很容易,只要用 visudo 重新設定 sudo 的設定便可以。首先以 …