OK google!
Hey! siri!
最近はスマートフォンやスマートスピーカーとおしゃべりできるようになっていますね。
私がいま最もお話ししてみたいひと(?)はメルセデスちゃん。 *1 https://www.mercedes-a.jp
Hi Mercedes!
誰か助手席に乗せてください。運転席でも後ろの席でもいいよ。
さて
私の仕事仲間のサーバさんはスマートなんとかAIとかじゃなくて普通のサーバですが、
ログインしたらあいさつくらいしてくれたら嬉しいな〜
簡単にできそうなことからはじめよう。
サーバの .bashrc
(ログイン時に読み込まれる設定ファイル)にあいさつを仕込んでみました。(ダメな例)
# .bashrc echo 'こんにちは ぼくはサーバ'
すると、ログインするとこのようにあいさつしてくれる(文字が表示される)ようになりました
Last login: Thu Nov 14 10:00:00 2019 from 192.000.00.0 amelieff Internet [DEDICATED SERVER SERVICE] こんにちは ぼくはサーバ
インターネットが壊れたの!
ここまではいいのですが、 scp
コマンドやファイル転送アプリを使って
他のサーバやPCへファイル転送をしようとすると失敗してしまいます。
他のPCからでも、ログインはできるのにscpだけ・・・?
調べてみると、.bashrc
の中身にecho で標準出力をさせてはいけないのだそうです。
.bashrc内にechoを入れておくとscpに失敗する - Qiita
ただし、標準エラー出力させるならOKらしい!
bash - SCP doesn't work when echo in .bashrc? - Stack Overflow
やってみよう。
>&2
(左側のテキストを標準エラー出力にリダイレクトするおまじない)を使って .bashrc のあいさつを書き直します。
標準出力をくわしく → bash: 標準出力、標準エラー出力をファイル、画面それぞれに出力する方法 - Qiita
# .bashrc echo 'こんにちは! ぼくはサーバ' >&2
ログインするとこう。↓標準出力のときと見た目は変わりません。
Last login: Thu Nov 14 10:00:00 2019 from 192.000.00.0 amelieff Internet [DEDICATED SERVER SERVICE] こんにちは ぼくはサーバ
ドキドキscpすると... これも成功!
[user@pasocon ~] scp server.com:copy.txt . user@server.com's password: copy.txt 100% 4350 100.0KB/s 00:00
これで安心。
サーバにログインするたびにあいさつが返っきてちょっぴり嬉しくなります。
よく考えると .bashrc に仕込んだ echo
というコマンド名も味わい深い。
こだまでしょうか、いいえ、だれでも。サーバでも。
このサーバでおしゃべりAIを開発しようかな!
ではでは。
*1:Mercedesの車に搭載されているらしいおしゃべりAI。カーナビや音響を操作できるとか。