複数のLinuxサーバに対して複数のユーザを削除する作業が発生し、作業を効率化するためTeraTermマクロのスクリプトを組んでみました。
下準備
- TeraTermのマクロファイルは拡張子を「.ttl」として作成します。
- TeraTermのマクロ実行エンジン「ttpmacro.exe」と「.ttl」ファイルを関連付けておくことで、.ttlファイルをダブルクリックするだけでマクロを実行できるようになります。
サンプルスクリプト
このサンプルスクリプトが行うこと
- スクリプト本文内にてあらかじめ指定したユーザ/パスワード/ホスト名を元に、SSH接続を行います。
- スクリプト本文内にてあらかじめ指定したユーザを userdel にて削除します。ユーザは複数指定できます。
- ユーザ削除後 cat /etc/group を行い、グループ一覧を表示します。
- 上記処理完了後、SSH接続を終了します。
- コマンドの実行結果をローカルマシンのログファイルに出力します。
スクリプト本文
sample.ttl
; ==================変更箇所ここから==================
; TODO と記載された箇所を適宜変更して下さい。
;; 接続先ホスト/ユーザ名/パスワード設定
HOSTADDR = 'TODO'
USERNAME = 'TODO'
PASSWORD = 'TODO'
;; ログファイル出力先ディレクトリ
LOGFILE = 'TODO'
;; 削除対象ユーザ
; TODO: ユーザ数を指定
USER_COUNT = 3
strdim USER USER_COUNT
;; 削除対象ユーザ名を指定。配列の数は上記USER_COUNTで指定した数-1で、定義して下さい。
USER[0] = 'TODO'
USER[1] = 'TODO'
USER[2] = 'TODO'
; ==================変更箇所ここまで==================
;; ログファイルの指定
strconcat LOGFILE '\'
strconcat LOGFILE HOSTADDR
strconcat LOGFILE '.txt'
;; コマンド組立て
COMMAND = HOSTADDR
strconcat COMMAND ':22 /ssh /2 /auth=password /user='
strconcat COMMAND USERNAME
strconcat COMMAND ' /passwd='
strconcat COMMAND PASSWORD
;; 接続
connect COMMAND
wait '$'
sendln 'sudo su'
wait '[sudo] password for'
sendln PASSWORD
wait '#'
;; ユーザ削除
logopen LOGFILE 0 0 ; ログの記録を開始
for i 0 USER_COUNT
COMMAND = 'userdel '
strconcat COMMAND USER[i]
sendln COMMAND
wait '#'
next
sendln 'cat /etc/group'
wait '#'
logclose ; ログ記録を終了
;; マクロ終了
closett ; 切断
備考
- 変数を大文字、メソッド名/構文を小文字で記載しています。
- sudo su コマンドで root になってユーザ削除を行うため、 sudo su の利用できるユーザを USERNAME に指定して下さい。
参考サイト
- Tera Termマクロ活用入門
http://sourceforge.jp/magazine/10/01/08/0825239 - Tera Termマクロ活用入門(2)
http://sourceforge.jp/magazine/10/01/18/105235