Teraterm macroテンプレ(簡易版)
世界にあふれているTeraterm macroのテンプレ。
自分が使ってるのを張っとこうかと思う。(今更
基本的なこと
ホスト名、ユーザ名、パスワード、鍵ファイルの指定などを書いておく。
テキストで作成→拡張子をttlにする。
→ダブルクリックでホストログインまで完了!!やったね!!
ほんとはログイン後にhostnameとかpwdとかsuしてパス入れて管理者権限になるってのも入れれるけど、自分用ではあまり使わない。
プレインテキストで鍵不使用、パスワードログインのまくろ
HOSTADDR = 'hostIP'
USERNAME = 'username'
PASSWORD = 'password'
sprintf2 COMMAND '%s /ssh /2 /auth=password /user=%s /passwd=%s ' HOSTADDR USERNAME PASSWORD
connect COMMAND
end
非常にシンプルですね。
IP,Uname,Pass指定して、ログインまでを自動化。
公開鍵認証、平文パスワード拒否
PROMPTのとこには鍵ファイル作成時に作ったパスフレーズを入れる。
HOSTADDR = 'hostname'
USERNAME = 'username'
PROMPT = 'password'
KEY_FILE = 'Path/to/id_rsa'
PASSWORD = ''
sprintf2 PASSFILE '%s.password.dat' KEY_FILE
getpassword PASSFILE PROMPT PASSWORD
sprintf2 COMMAND '%s /ssh /2 /auth=publickey /user=%s /passwd=%s /keyfile="%s"' HOSTADDR USERNAME PASSWORD KEY_FILE
connect COMMAND
end
HOSTはFQDNでもIPでも可。
usernameは普通にユーザ名
KeyFileは作成した鍵ファイルを指定。
もっといろいろやりたい人はこういうとこ見ると幸せになれるかも
リダイレクトとかのつかいかた
前提的な
・コマンドの実行結果は通常端末上に表示される。
・コマンドへの入力は通常キーボードから。
⇒これをファイルに出力、ファイルから入力するのがリダイレクト。
ファイルに書き込むあれこれ
コマンド > ファイル
・実行結果をファイルに書き込む。
・ファイルが無いときは新規作成。
・ファイルがあるときは上書き。
$ ls -l >ls.txt
$ cat ls.txt
total 79344
drwxr-xr-x 2 tmin tmin 4096 Oct 15 22:14 ビデオ
drwxr-xr-x 2 tmin tmin 4096 Oct 15 22:14 テンプレート
drwxr-xr-x 2 tmin tmin 4096 Oct 15 22:14 デスクトップ
drwxr-xr-x 2 tmin tmin 4096 Oct 15 22:14 ダウンロード
drwxr-xr-x 2 tmin tmin 4096 Oct 15 22:14 ドキュメント
drwxr-xr-x 2 tmin tmin 4096 Feb 26 12:34 backup
drwxr-xr-x 3 tmin tmin 4096 Oct 15 23:07 css
drwxr-xr-x 6 tmin tmin 4096 Oct 15 23:11 esuteru.com
~~中略~~
-rw-r--r-- 1 root root 2920 Oct 1 16:49 update.log
-r--r--r-- 1 root root 72448981 Oct 1 19:15 VMwareTools-10.0.10-4301679.tar.gz
drwxr-xr-x 9 root root 4096 Aug 26 2016 vmware-tools-distrib
drwxr-xr-x 5 tmin tmin 4096 Sep 9 21:50 wordpress
-rw-r--r-- 1 tmin tmin 8402893 Sep 10 14:12 wordpress-4.6.1-ja.tar.gz
drwxr-xr-x 2 tmin tmin 4096 Oct 15 22:14 公開
drwxr-xr-x 2 tmin tmin 4096 Oct 15 22:14 画像
drwxr-xr-x 2 tmin tmin 4096 Oct 15 22:14 音楽
コマンド >> ファイル
・実行結果をファイルに書き込む
・ファイルが無いときは新規作成
・ファイルがあるときは「追記する」
$ pwd > pwdtest
$ cat pwdtest
/home/tmin
$ pwd >> pwdtest
$ cat pwdtest
/home/tmin
/home/tmin
コマンド 2> ファイル
ファイルに標準エラー出力を書き込む。
$ cat / 2> errortest
$ cat errortest
cat: /: ディレクトリです
コマンド < ファイル
ファイルの内容をコマンドの標準入力に送る。
実践&活用
MySQLのDBバックアップ時。またはリストアするとき。
基本
mysqldump -u ユーザ名 -p DB名 > 出力先ファイル名
全DBのバックアップをdump.sqlに書き出し。
mysqldump -u root -x --all-databases > dump.sql
# mysqldump -u root -p -x --all-databases > dump.sql
db_redmineのバックアップをredmine.sqlに書き出し。
DBの復元⇒ダンプファイルからmysqldumpに送る
mysql -u ユーザ名 -p DB名 < ダンプファイル名
全DBの復元
上の方で作ったdump.sqlから全DBを復元するには
同様にdb_redmineのみ復元の場合
Debian系でインストールされているパッケージの一覧バックアップ&リストから一撃インストール
dpkgコマンドからlistファイルに書き出し。
dpkg --get-selections > list
取っておいたlistファイルから読み込んで一撃インストール!!
dpkg --set-selections < list
apt-get dselect-upgrade
基本的にはバックアップとかリストアとか。
あとは自動で動かしたシェルやらなんやらのログを出したいときとかに使うと幸せになれるかもしれない。
ちなみに書き出し系のリダイレクトは実行したディレクトリに書き出しファイルを作成するので、(ディレクトリ指定はできる)ファイルの出力先は作業できるディレクトリにしといた方が吉。
Linuxコマンドでの引用符のつかいかた
grepとかによく使う引用符。
種類
シングルクォーテーション('')
この中は全て文字列と解釈される。
ダブルクォーテーション(" ")
この中も文字列。
ただし変数が入っているときは展開される。
バッククォーテーション(` `)
この中にコマンドが入っていれば実行結果が展開される。
変数が入っているときは変数を展開し、中身のコマンドを実行する。
具体例
dateコマンドと変数DATEにdateをセットした時の出力を比べる
$ date
Fri Feb 24 11:57:36 JST 2017$ echo "date"
date
$ echo 'date'
date
$ echo `date`
Fri Feb 24 12:01:23 JST 2017
変数はないので、引用符内の「date」が文字列として扱われるか、コマンドとして扱われるかの違いのみ。
'' ""の中身は文字列として扱われるのでそのまま「date」を出力。
``の中身はコマンドとして解釈されて実行結果が展開されるので、$ dateの実行結果がechoされる。
変数にdateをせっと
$ DATE=date
これで$DATE=date
$ echo "$DATE"
date
$ echo '$DATE'
$DATE
$ echo `$DATE`
Fri Feb 24 12:03:44 JST 2017
二重引用符の時は$DATEの中身が展開される(=date)けど、コマンドとしては解釈されないので、ただ変数が展開された結果のdateが出力。
単一引用符の場合は中身が全て文字列として解釈されるので、中身の$DATEがそのまま文字列として出力される。
バッククォーテーションの場合は変数が展開⇒変数の中身のdateが実行されて、実行結果が出力される。
実用1
/var/log/messagesの最近のログからerror行を見よう
対象ファイル
# ls -1tr /var/log/ | grep messages
messages.4.gz
messages.3.gz
messages.2.gz
messages.1
messages
これだと.gzファイルが入っててめんどいので、圧縮前のmessages(現行)とmessages.1(一世代前)を対象にしてみる。
# ls -1tr /var/log/ | grep messages | tail -2
messages.1
messages
おk
①パイプで渡す
/var/log配下一覧表示→messagesが入ってるのを抜き出す→最後の2行(圧縮前のファイル)を抜き出す
→xargsでcatに渡す→errでgrep(-iなので大文字小文字両方引っかかる)
# cd /var/log/
# ls -1tr | grep messages | tail -2 | xargs cat | grep -i 'err'
Feb 20 03:40:48 debian kernel: [3258971.032714] hrtimer: interrupt took 19122757 ns
Feb 24 11:51:50 debian kernel: [3634205.930279] xfs: Unknown symbol setattr_prepare (err 0)
Feb 24 11:51:50 debian kernel: [3634205.932033] xfs: Unknown symbol posix_acl_update_mode (err 0)
Feb 24 11:51:50 debian kernel: [3634205.939188] jfs: Unknown symbol setattr_prepare (err 0)
Feb 24 11:51:50 debian kernel: [3634205.939595] jfs: Unknown symbol posix_acl_update_mode (err 0)
Feb 24 11:51:50 debian kernel: [3634205.948860] fat: Unknown symbol setattr_prepare (err 0)
Feb 24 11:51:50 debian kernel: [3634205.950338] fat: Unknown symbol setattr_prepare (err 0)
Feb 24 11:51:50 debian kernel: [3634205.953980] ntfs: Unknown symbol setattr_prepare (err 0)
Feb 24 11:51:50 debian kernel: [3634205.956213] minix: Unknown symbol setattr_prepare (err 0)
Feb 24 11:51:50 debian kernel: [3634205.958425] hfs: Unknown symbol setattr_prepare (err 0)
Feb 24 11:51:50 debian kernel: [3634205.960883] hfsplus: Unknown symbol setattr_prepare (err 0)
Feb 24 11:51:50 debian kernel: [3634205.964232] ufs: Unknown symbol setattr_prepare (err 0)
Feb 24 11:51:50 debian kernel: [3634205.969289] btrfs: Unknown symbol setattr_prepare (err 0)
Feb 24 11:51:50 debian kernel: [3634205.969787] btrfs: Unknown symbol posix_acl_update_mode (err 0)
Feb 24 11:55:46 debian kernel: [ 3.199508] ACPI: Using IOAPIC for interrupt routing
Feb 24 11:55:46 debian kernel: [ 3.409457] ACPI: PCI Interrupt Link [LNKA] (IRQs 3 4 5 6 7 *9 10 11 14 15)
Feb 24 11:55:46 debian kernel: [ 3.409526] ACPI: PCI Interrupt Link [LNKB] (IRQs 3 4 5 6 7 9 10 *11 14 15)
Feb 24 11:55:46 debian kernel: [ 3.409591] ACPI: PCI Interrupt Link [LNKC] (IRQs 3 4 5 6 7 9 *10 11 14 15)
Feb 24 11:55:46 debian kernel: [ 3.409654] ACPI: PCI Interrupt Link [LNKD] (IRQs 3 4 5 6 *7 9 10 11 14 15)
Feb 24 11:55:46 debian kernel: [ 3.862607] pcieport 0000:00:15.0: Signaling PME through PCIe PME interrupt
Feb 24 11:55:46 debian kernel: [ 3.862716] pcieport 0000:00:15.1: Signaling PME through PCIe PME interrupt
~~省略~~
errだけじゃなくてInt「err」uptとかも引っかかってる。
抜くならgrep -iv 'interrupt'とか重ねれば良いんだけど、そうするとinterruptとerrと両方含まれる行も弾かれる・・・
②grepの引数に``でくくったコマンドをせっと
# grep -i 'err' `ls -1tr | grep messages | tail -2`
messages:Feb 20 03:40:48 debian kernel: [3258971.032714] hrtimer: interrupt took 19122757 ns
messages:Feb 24 11:51:50 debian kernel: [3634205.930279] xfs: Unknown symbol setattr_prepare (err 0)
messages:Feb 24 11:51:50 debian kernel: [3634205.932033] xfs: Unknown symbol posix_acl_update_mode (err 0)
messages:Feb 24 11:51:50 debian kernel: [3634205.939188] jfs: Unknown symbol setattr_prepare (err 0)
messages:Feb 24 11:51:50 debian kernel: [3634205.939595] jfs: Unknown symbol posix_acl_update_mode (err 0)
messages:Feb 24 11:51:50 debian kernel: [3634205.948860] fat: Unknown symbol setattr_prepare (err 0)
messages:Feb 24 11:51:50 debian kernel: [3634205.950338] fat: Unknown symbol setattr_prepare (err 0)
messages:Feb 24 11:51:50 debian kernel: [3634205.953980] ntfs: Unknown symbol setattr_prepare (err 0)
messages:Feb 24 11:51:50 debian kernel: [3634205.956213] minix: Unknown symbol setattr_prepare (err 0)
messages:Feb 24 11:51:50 debian kernel: [3634205.958425] hfs: Unknown symbol setattr_prepare (err 0)
messages:Feb 24 11:51:50 debian kernel: [3634205.960883] hfsplus: Unknown symbol setattr_prepare (err 0)
messages:Feb 24 11:51:50 debian kernel: [3634205.964232] ufs: Unknown symbol setattr_prepare (err 0)
messages:Feb 24 11:51:50 debian kernel: [3634205.969289] btrfs: Unknown symbol setattr_prepare (err 0)
messages:Feb 24 11:51:50 debian kernel: [3634205.969787] btrfs: Unknown symbol posix_acl_update_mode (err 0)
messages:Feb 24 11:55:46 debian kernel: [ 3.199508] ACPI: Using IOAPIC for interrupt routing
messages:Feb 24 11:55:46 debian kernel: [ 3.409457] ACPI: PCI Interrupt Link [LNKA] (IRQs 3 4 5 6 7 *9 10 11 14 15)
messages:Feb 24 11:55:46 debian kernel: [ 3.409526] ACPI: PCI Interrupt Link [LNKB] (IRQs 3 4 5 6 7 9 10 *11 14 15)
messages:Feb 24 11:55:46 debian kernel: [ 3.409591] ACPI: PCI Interrupt Link [LNKC] (IRQs 3 4 5 6 7 9 *10 11 14 15)
messages:Feb 24 11:55:46 debian kernel: [ 3.409654] ACPI: PCI Interrupt Link [LNKD] (IRQs 3 4 5 6 *7 9 10 11 14 15)~~省略~~
いきなりgrepするので、1カラム目にファイル名が出力される。
後の結果は同じ。
``の中のコマンドは展開されて実行されるので、
ls -1tr | grep messages | tail -2の結果がgrep -i 'err'の引数として渡される。
grep -i 'err' messages.1 messages
とおなじになっているはず。
ちなみに-hをつけると先頭カラムのファイル名が出力されない。
# grep -ih 'err' `ls -1tr | grep messages | tail -2`
Feb 20 03:40:48 debian kernel: [3258971.032714] hrtimer: interrupt took 19122757 ns
Feb 24 11:51:50 debian kernel: [3634205.930279] xfs: Unknown symbol setattr_prepare (err 0)
Feb 24 11:51:50 debian kernel: [3634205.932033] xfs: Unknown symbol posix_acl_update_mode (err 0)
Feb 24 11:51:50 debian kernel: [3634205.939188] jfs: Unknown symbol setattr_prepare (err 0)
Feb 24 11:51:50 debian kernel: [3634205.939595] jfs: Unknown symbol posix_acl_update_mode (err 0)
Feb 24 11:51:50 debian kernel: [3634205.948860] fat: Unknown symbol setattr_prepare (err 0)
Feb 24 11:51:50 debian kernel: [3634205.950338] fat: Unknown symbol setattr_prepare (err 0)
Feb 24 11:51:50 debian kernel: [3634205.953980] ntfs: Unknown symbol setattr_prepare (err 0)
Feb 24 11:51:50 debian kernel: [3634205.956213] minix: Unknown symbol setattr_prepare (err 0)
Feb 24 11:51:50 debian kernel: [3634205.958425] hfs: Unknown symbol setattr_prepare (err 0)
Feb 24 11:51:50 debian kernel: [3634205.960883] hfsplus: Unknown symbol setattr_prepare (err 0)
Feb 24 11:51:50 debian kernel: [3634205.964232] ufs: Unknown symbol setattr_prepare (err 0)
Feb 24 11:51:50 debian kernel: [3634205.969289] btrfs: Unknown symbol setattr_prepare (err 0)
Feb 24 11:51:50 debian kernel: [3634205.969787] btrfs: Unknown symbol posix_acl_update_mode (err 0)
Feb 24 11:55:46 debian kernel: [ 3.199508] ACPI: Using IOAPIC for interrupt routing
実用2
ファイル名に日付を付けたい
$ date +%Y%m%d
20170224
$ touch test`date +%Y%m%d`
$ ls
test20170224
$ tar cvzf ./backup/files_`date +%Y%m%d`.tar.gz files
$ ls backup/
files_20170224.tar.gz
今いるディレクトリ内のfilesフォルダをtarでアーカイブ&圧縮。
圧縮ファイル名をfiles_日付.tar.gzで固める。
``で囲った中のdateコマンドがオプション付きで実行されて、files_の後ろにくっつく。