Skip to content

end_report

KoueiYamaoka edited this page May 9, 2018 · 11 revisions

プログラムの終了を通知してくれる機能(テスト期間中)

前提条件

  • 研究室内から使用すること
  • ネットワークに接続されていること
    • windowsの場合: putty付属のplink.exeがインストールされていること
    • linuxの場合: ssh, sshpass がインストールされていること
      • $ sudo apt-get install sshpass
  • ¥ と \ は等価

使用方法

  • 実行するスクリプトの最後に以下のコードを追記し,いつもどおり実行.
    • コード内の(username@slack) はslackでのユーザ名に変更 (ex: yamaoka)
    • コード内の(script name) は実行するスクリプト名に変更 (ex: test.m)

MATLAB

windows

  1. puttyがあるフォルダのパスを調べる
    • puttyフォルダを開き,アドレスバーを右クリックでアドレスをコピー
  2. (path_to_putty)をコピーしたものに置き換える
cmd = '(path_to_putty)\plink.exe shumaikun@172.16.0.210 -pw (パスワード。誰かに聞いてね) python3 endReport (slack のユーザ名) (script name)';
system(cmd);
cmd = 'C:\Users\Owner\Desktop\putty-0.67-ja20160306\plink.exe shumaikun@172.16.0.210 -pw (パスワード。誰かに聞いてね) python3 endReport yamaoka test.m';
system(cmd);

linux

cmd = 'sshpass -p (パスワード。誰かに聞いてね) ssh shumaikun@172.16.0.210 ''python3 ~/endReport (slack のユーザ名) (script name)''';
system(cmd);
cmd = 'sshpass -p (パスワード。誰かに聞いてね) ssh shumaikun@172.16.0.210 ''python3 ~/endReport yamaoka test.m''';
system(cmd);

python

MATLABとほぼ同じ

linux

import os
cmd = "sshpass -p (パスワード。誰かに聞いてね) ssh shumaikun@172.16.0.210 'python3 ~/endReport (slack のユーザ名) (script name)'"
os.system(cmd)

windows (未確認)

import
cmd = '(path_to_putty)\plink.exe shumaikun@172.16.0.210 -pw (パスワード。誰かに聞いてね) python3 endReport (slack のユーザ名) (script name)';
os.system(cmd);

詳細

  • プログラム本体はサーバにあり,上記コマンドはスクリプトから ssh コマンドを呼び出しているだけ.
  • 他言語でも変数 cmd に格納してある文字列を実行すればこの機能が使えるはず.
  • テスト期間中はサーバの都合上パスワードが必要なため面倒になっている.

既知のエラー

  • ubuntu 16.04 で MATLAB を使用時
  • ssl のバージョンがミスマッチしてるとかいうエラーをMATLABが吐く.
  • 解決策は不明なため,以下のように力技で戦う.
$ matlab -nodesktop -nosplash -r '(script name W/O .m); exit' ; sshpass -p (パスワード。誰かに聞いてね) ssh shumaikun@172.16.0.210 'python3 ~/endReport (slack のユーザ名) (script name)
  • コマンドmatlabはmatlabの実行ファイルを起動するalias
  • (script name W/O .m) は実行ファイルが test.m であれば test
  • sshpass ... は長いのでaliasでも貼ればいいのでは