Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

sshのリモートコマンドにローカルファイルを渡して実行したい

ホストOSで得られた画像だとか計算結果をリモートOSに渡して計算してもらう方法です。
私の例ですと、手元で計算した結果をリモートOSでちょっと加工して周辺装置に飛ばす構成でつかいました。

実際のところ

ホストのローカルにある123.txtを、
VirtualBoxのホストIPが127.0.0.1(localhost)、ホストポートが2222で
ゲストのcmd.shの結果を/dev/ttyACM0に結果を出力したい場合……以下のようにします。*1

$ ssh localhost -l guestname -p 2222 "./cmd.sh  > /dev/ttyACM0" < 123.txt

*1:書いてて思いましたがアホほどややこしいことしてますね……

VirtualBoxのゲストOSにホストOSからSSHでログインする(ホストIP設定編)

このネタ何度目やねんって話ですが……またぞろうまくいかなかったので、メモ。

実際のところ

VirtualBoxの設定

起動していない状態で、インスタンスの設定からネットワークにとび
f:id:shuzo_kino:20190909035743p:plain
ポートフォワーディングで、ホストIPをローカルホスト、ホストポートを2222と設定。*1
いままでやってきた手法と違うのはホストIPを設定したところ。
これで外部ネットワークに繋がないタイプの構成でも安心。
f:id:shuzo_kino:20190909035748p:plain

ufwも設定しときましょう。

 $ sudo ufw default deny
 $ sudo ufw allow 20/TCP
 $ sudo ufw allow 2222/TCP
 $ sudo ufw enable

接続

localhostに接続する構成だと、以下のような感じでログインすることになります。

$ ssh guestname@localhost  -p 2222

リモートコマンドもできます

$ ssh  guestname@localhost -p 2222 "pwd"

TCPポートにしましょう。

荒い記憶で入力したところ、SSHのログインができず。
ログをみてみると……。

ssh_exchange_identification: read: Connection reset by peer

よくみてみると、ポート番号のヨコにプロトコル書いてませんでした……。


*1:ホントはもっと違う数値にすべきなんですがね

【読書メモ】暗号の数理(ブルーバックス)

改訂新版 暗号の数理―作り方と解読の原理 (ブルーバックス)

改訂新版 暗号の数理―作り方と解読の原理 (ブルーバックス)

信頼と実績のブルーバックスによる、暗号の本です。
80年代に前のバージョンが出てていたらしく、
その頃は最新鋭だった公開鍵方式が今や一般インフラとして普及してることに
著者が感慨深く触れているところが印象的でした。
著者の失敗エピソードも、東大助教時代に米軍の暗号解析でやらかした事だったりと妙に"時代"を感じます。

【読書メモ】食える数学

食える数学 (角川ソフィア文庫)

食える数学 (角川ソフィア文庫)

タイトルがあまりに強すぎる、数学系よみものです。
アクチュアリー(保険数理士)という職業について調べていたときに検索リストに出てきたので、購入。

数学科をでて、企業で使われてる数式がヌルく楽勝だとタカくくるあたりとか、
結局通用せず往復3時間の通勤電車でする自主勉強が心の支えになったとか
本来欲しかった情報以外のところがズバズバ刺さってきて辛かったです(零細事業主並みの感想

odで数バイト分読みをスキップしたい場合

odで数バイト分読みをスキップしたい場合は"j"オプションがあります。
あらかじめ全部読んで必要部だけ引っ張るのがシェル流でしょうが、
少しでも不可減らしたいときは結構有効だったり。

実際のところ

$ printf "0123" | od -j 0
0000000    030460  031462                                                
0000004

$ printf "0123" | od -j 3
0000003    000063                                                        
0000004

ちなみにオーバーするとなんも表示されません。

$ printf "0123" | od -j 4
0000004

参考もと

  • man od

odコマンドで一行でだす

odコマンドはデフォだと、行番号まで出てきて何かしら細工をしたい場合使いづらいです。
今回は、これを一行で出す方法。

実際のところ

$ echo 123 | od -An -v
           031061  005063                                                

16進数は"x"

$ echo 123 | od -An -v -tx1
           31  32  33  0a           

$ echo 123 | od -An -v -tx2
             3231    0a33                                     

10進数は"u"

$ echo 123 | od -An -v -tu1
           49  50  51  10                                                

$ echo 123 | od -An -v -tu2
            12849    2611                                                

末尾の改行がいらないなら、printfかechoのオプションつきで。

$ printf "123" | od -An -v -tu1 | tr -d " "
495051

故郷の村を人質に取られてシェルのまま計算しないといけない場合

$ expr `printf "123" | od -An -v -tu1 | tr -d " " ` + 1
495052

$ expr `printf "123" | od -An -v -tu1 | tr -d " " ` \* 2
990102

単純に数値を出したいだけならprintfが楽

結果を16進数にするなら、結局printfが一等楽

$ printf "%x\n" 990102
f1b96

参考もと

hydrocul.github.io