アメリエフの技術ブログ

Amelieff Staff Blog

Hello world! コンピュータからメッセージ!?

OK google!
Hey! siri!
最近はスマートフォンやスマートスピーカーとおしゃべりできるようになっていますね。

私がいま最もお話ししてみたいひと(?)はメルセデスちゃん。 *1 https://www.mercedes-a.jp
Hi Mercedes!

誰か助手席に乗せてください。運転席でも後ろの席でもいいよ。

さて

私の仕事仲間のサーバさんはスマートなんとかAIとかじゃなくて普通のサーバですが、
ログインしたらあいさつくらいしてくれたら嬉しいな〜

f:id:Fuku-I:20191115111917p:plain:w200
ログインしたらあいさつとか・・・

簡単にできそうなことからはじめよう。
サーバの .bashrc (ログイン時に読み込まれる設定ファイル)にあいさつを仕込んでみました。(ダメな例)

# .bashrc
echo 'こんにちは ぼくはサーバ' 

すると、ログインするとこのようにあいさつしてくれる(文字が表示される)ようになりました

Last login: Thu Nov 14 10:00:00 2019 from 192.000.00.0

amelieff Internet [DEDICATED SERVER SERVICE]

こんにちは ぼくはサーバ

インターネットが壊れたの!

ここまではいいのですが、 scp コマンドやファイル転送アプリを使って 他のサーバやPCへファイル転送をしようとすると失敗してしまいます。
f:id:Fuku-I:20191115112105p:plain:w150
他の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。カーナビや音響を操作できるとか。