viエディタの現在のモードをわかりやすくする
コマンドモードにして(現在何モードかがわからなければ、とりあえず[Escキー]を連打)
:set showmode
すると、右下(または左下)に現在のモードが表示される。
— 挿入 —
コマンドモードの場合は、何も表示されない。
Linuxなどインフラ関連に関する自分のための覚書のメモを公開
コマンドモードにして(現在何モードかがわからなければ、とりあえず[Escキー]を連打)
:set showmode
すると、右下(または左下)に現在のモードが表示される。
— 挿入 —
コマンドモードの場合は、何も表示されない。
シェルのviモードを有効にする。
$ set -o vi
viモードを有効にしたら・・・
Escキーを押して(viでいうところのコマンドモードにする)
[Escキー]
Ctrl+K(一つ前(過去)のコマンド)
Ctrl+J(1つ後(直近)のコマンド)
/<検索ワード>[Enterキー] (コマンド履歴から検索)
*(アスタリスクShift+:)
※補完できる状態まで入力している必要あり。候補が複数ある場合は全部rリストされるので注意。
シェルスクリプトで、他ホストにtelnetログインしてコマンドを実行し情報を取得する方法。
たとえば、L2/L3スイッチの統計情報やarpテーブルの情報を自動的に取得する処理をシェルスクリプトで作成したいとき
telnetの場合、FTP転送をヒアドキュメントを使用して自動的に実行するのと同じ方法では実装できない。理由は、ヒアドキュメントの場合、標準入力に間髪入れずに入力内容を送りこんでしまうので、ログインプロンプトを待つことができないから。
ユーザ名を標準入力に送り込む前に少し待機すると、ログインすることができる。
ポイントは、
・ヒアドキュメントを使用せずに、コマンドのグループ化とパイプを使用してtelnetコマンドの標準入力にコマンドを送り込む
・sleepコマンドで待機
実際のやり方は以下を参照。(Ciscoのスイッチからarpテーブル情報を取得する場合。)
$ (sleep 5; #パスワードプロンプトが表示されるまでsleepコマンドで待つ
echo username;sleep 5; #ユーザ名入力 標準入力に送り込むのでechoで出力(Ciscoスイッチは実際にはユーザ名入力はありません)
echo password;sleep 10; # パスワード入力
enable;sleep 5; #特権モードへ切り替え
echo enablepassword;sleep 1; # 特権モードのパスワード入力
show arp;sleep 1; # arpテーブル取得
exit; ) | telnet 192.168.1.250 >> arp.log # コマンドをグループ化し、その標準出力をパイプでtelnetコマンドの標準入力に送り込む
追記:
この方法はスクリプトで、passwdコマンドを使ってパスワードを自動設定するときにも使えます!