新城@筑波大学情報です。こんにちは。

ゆえ合って、ssh した先で Jupyter Notebook を実行し、ローカルのブラウザで
実行するシェル・スクリプトを作ってみました。基本は ssh -L なのですが、細
かい工夫があります。

ちょっと検索すると、気に入った方法が出てきません。ssh 先でローカルで実行
することもあるので、--generate-config して設定ファイルを作ると、設定ファ
イルを使い分けるのは面倒です。設定ファイルにポート番号書くと、衝突したと
き問題があります。また、パスワードも token あれば不要のはず。

以下のスクリプトの使い方です。端末を用意して、そこで引数としてホスト名を
与えて実行します。引数にポート付けても良いです。さらに、リモートで cd す
るディレクトリを指定できます。

うまく実行できると、Jupyter Notebook が"copy and paste one of these
URLs:" と表示します。そのうちの URL の1つをコピーして、Web ブラウザのア
ドレスバーにペーストします。

終了する時には、ブラウザの画面で quit ボタンを押せば良いのですが、端末で
^C で止めても良いです。

------------------------------------------------------------------------
#!/bin/sh

port=8888
dir=.

usage() {
        echo "Usage: $0 host {port {dir}}"
        exit 1
}

case $# in
0)     usage;;
1)     ;;
2)     port=$2;;
3)     port=$2;dir=$3;;
*)     usage;;
esac

host=$1

ssh -t $host -L $port:localhost:$port "cd $dir; jupyter notebook --no-browser --port=$port"
------------------------------------------------------------------------

ssh -t で ^C がリモートに送れるのが少しうれしい。
bash 4 で case 文が fallthrough にできるようになっていたんですね。

\\ 新城 靖 (しんじょう やすし) \\
\\ 筑波大学 情報工学        \\