ansibleでフィンガープリントを表示させない方法
ansibleでフィンガープリントを表示させない方法を紹介します。
1.問題点
ansibleでログイン経験がないサーバにログインをすると、下記のような「フィンガープリント」が表示されます。
The authenticity of host '[127.0.0.1]:22 ([127.0.0.1]:22)' can't be established.
RSA key fingerprint is SHA256:1pOx1qnpCf9UfJQPVaMRfJV/6LZkHWQXljHwwYGlN1g.
Are you sure you want to continue connecting (yes/no/[fingerprint])?
ansible実行時にフィンガープリントを表示させないのですが、方法がわかりません。
ということで、ansibleでフィンガープリントを表示させない方法を紹介します。
2.ansibleでフィンガープリントを表示させない
ansibleでフィンガープリントを表示させないようにするには、ansible.cfgに下記の設定を追加します。
[ssh_connection]
ssh_args = '-o ControlMaster=auto -o ControlPersist=60s -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null'
オプションの意味は次の通りです。
- ControlMaster=auto:sshのセッションが存在するときにそのセッションを再利用する仕組み
- ControlPersist=60s:ControlMasterをバックグランドにまわしてくれる機能
- StrictHostKeyChecking=no:ホストの~/.ssh/known_hostsに存在しないときに確認なしに接続し、フィンガープリントは確認なしにknown_hostsに記録されます
- UserKnownHostsFile=/dev/null:ホストの~/.ssh/known_hostsを常に空(/dev/null)にすることで、サーバ交換等でフィンガープリントが変わったときにエラーとなってしまうのを回避します
FFmpegをWindowsにインストールする方法
FFmpegをWindowsにインストールする方法を紹介します。
1.はじめに
Windows端末で「ScreenToGif」という、デスクトップキャプチャで取得した動画をMP4で保存しようとしたら、「FFmpegのパスが通っていません」と警告が表示されました。
FFmpeg自体インストールした記憶がないので、本記事でFFmpegをWindowsにインストールする方法を紹介します。
ちなみに、FFmpegはオープンソースのマルチメディアフレームワークで、主にコマンドラインツールとして動作し、多くの音声・動画フォーマットに対応した、ストリームの保存や変換が可能です。
2.FFmpegのダウンロード
FFmpegのページにアクセスして「Download」をクリック。
Windowsのアイコンをクリック。
「Windows builds by BtbN」をクリック。
「ffmpeg-master-latest-win64-gpl.zip」をクリック。
ダウンロードしたアーカイブを展開し、ここでは
C:\Program Files (x86)\ffmpeg
となるように配置します。
2.パスを通す。
タスクバーの検索フィールドに「システムの詳細設定」を入力して、「システムの詳細設定の表示」をクリック。
「環境変数」をクリック。
「xxのユーザー環境変数」の「Path」を選択した状態で「編集」をクリック。
「新規」をクリック。
今回は下記のパスを追加して「OK」をクリック。
C:\Program Files (x86)\ffmpeg\bin
前の画面も「OK」をクリックして、すべて閉じます。
3.動作確認
コマンドプロンプトを開いて、下記のコマンドを実行。
ffmpeg -version
パスが正常に通っていれば、下記のメッセージが表示されます。
これでFFmpegのインストール完了です。
シェルスクリプトのexpectで応答メッセージを振り分ける方法
シェルスクリプトのexpectで確認メッセージを振り分ける方法を紹介します。
1.問題点
シェルスクリプトを使ってパスワード入力が必要なコマンド(scp)を実行するためにexpectを使っています(下記)。
#!/bin/bash
expect -c "
spawn scp /home/foo/abc.txt foo@172.16.5.10:/home/foo
expect \"Are you sure you want to continue connecting (yes/no)?\"
send \"yes\n\"
expect \"password:\"
send \"hoge\n\"
interact
"
ですが、確認メッセージが2パターンあり、それらを振り分ける方法がわかりません。
具体的には、
% scp /home/foo/abc.txt foo@172.16.5.10:/home/foo
というコマンドを実行すると、初回は、
Are you sure you want to continue connecting (yes/no)?
と聞かれて、そのあと
password:
を聞かれるのですが、2回目以降は、
password:
しか聞かれません。
ということで、シェルスクリプトのexpectで確認メッセージを振り分ける方法を紹介します。
2.シェルスクリプトのexpectで確認メッセージを振り分ける
確認メッセージを振り分けるには、次のように書き換えます。
#!/bin/bash
expect -c "
spawn scp /home/foo/abc.txt foo@172.16.5.10:/home/foo
expect {
\"Are you sure you want to continue connecting (yes/no)?\" {
send \"yes\n\"
expect \"password:\"
send \"hoge\n\"
} \"password:\" {
send \"hoge\n\"
}
}
interact
"
具体的には、expect節で全体を括り、その中にifのthen節とelse節のように確認メッセージを分けて記述します。