JupyterLabは、ブラウザでプログラミング操作をしながら、コマンド履歴や実行結果、メモなどをmarkdown風ノートに記録するツールです。
bash kernelやssh kernelを追加インストール使うことで、bashやsshの操作履歴や実行結果を記録として残すことができます。ターミナルからコピペする必要がありません。
何を言っているのかわからないよ?
スクショを見れば一目瞭然よ
インストール
Mac OS X 10.15.4
Ubuntu 18.04
jupyterlabをpip でインストールします。
$ pip install jupyterlab
Code language: Bash (bash)
$ jupyter --version
jupyter core : 4.6.3
jupyter-notebook : 6.0.3
qtconsole : not installed
ipython : 7.14.0
ipykernel : 5.2.1
jupyter client : 6.1.3
jupyter lab : 2.1.2
nbconvert : 5.6.1
ipywidgets : not installed
nbformat : 5.0.6
traitlets : 4.3.3
$ jupyter lab --version
2.1.2
$ jupyter kernelspec list
Available kernels:
python3 /Users/aoki.makoto/.pyenv/versions/3.8.2/lib/python3.8/site-packages/ipykernel/resources
Code language: Bash (bash)
使い方
起動と終了
ターミナルを開いて、作業したいディレクトリへcdします。ホームディレクトリのままでもかまいません。jupyter labを起動します。
jupyter labを終了するまで、このターミナルを使えません。最後に「&」をつけて起動してもいいのですが、他の作業をしているときに、jupyterのログが表示されてしまいます。
jupyter lab専用のターミナルと割り切って、他のターミナル作業が必要なときは、新しくターミナルを開いて作業してください。
$ jupyter lab
[I 10:06:07.197 LabApp] JupyterLab extension loaded from /Users/aoki.makoto/.pyenv/versions/3.8.2/lib/python3.8/site-packages/jupyterlab
[I 10:06:07.198 LabApp] JupyterLab application directory is /Users/aoki.makoto/.pyenv/versions/3.8.2/share/jupyter/lab
[I 10:06:07.200 LabApp] Serving notebooks from local directory: /Users/aoki.makoto
[I 10:06:07.201 LabApp] The Jupyter Notebook is running at:
[I 10:06:07.201 LabApp] http://localhost:8888/?token=b9fd0a535c3477b65e312d1e48e4f8567036fe10cf463b5c
[I 10:06:07.201 LabApp] or http://127.0.0.1:8888/?token=b9fd0a535c3477b65e312d1e48e4f8567036fe10cf463b5c
[I 10:06:07.201 LabApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
[C 10:06:07.209 LabApp]
To access the notebook, open this file in a browser:
file:///Users/aoki.makoto/Library/Jupyter/runtime/nbserver-75725-open.html
Or copy and paste one of these URLs:
http://localhost:8888/?token=b9fd0a535c3477b65e312d1e48e4f8567036fe10cf463b5c
or http://127.0.0.1:8888/?token=b9fd0a535c3477b65e312d1e48e4f8567036fe10cf463b5c
[I 10:06:10.383 LabApp] Build is up to date
Code language: Bash (bash)
自動でWebブラウザがlocalhost:8888を開き、Jupyter Labの画面が表示されます。このLauncherタブは、Fileメニュー>New Launcherでも表示できます。
左ペインのhello.pyは、あらかじめ touch hello.py しておいたファイルです。この左ペインは、起動ディレクトリのファイル一覧です。
NotebookのPython3をクリックします。「pwd」と入力します。「▶」ボタンをクリックして実行してください。
新しいセルに「touch hello.txt」と入力します。「▶」ボタンをクリックして実行してください。bashではないので、エラーになってしまいました。
jupyter labを起動したターミナルを表示します。Ctrl + Cを押して、「y」を押して、終了します。
Shutdown this notebook server (y/[n])? y
[C 09:57:06.300 LabApp] Shutdown confirmed
[I 09:57:06.301 LabApp] Shutting down 0 kernels
Code language: JavaScript (javascript)
bash kernelのインストール
Jupyter Labのインストール直後は、Python kernelだけですが、各種プログラミング言語のkernelが用意されています。ここでは、bash kernel を使ってみます。
bash kernelをインストールします。
$ pip install bash_kernel
$ python -m bash_kernel.install
Installing IPython kernel spec
$ jupyter kernelspec list
Available kernels:
python3 /Users/aoki.makoto/.pyenv/versions/3.8.2/lib/python3.8/site-packages/ipykernel/resources
bash /Users/aoki.makoto/Library/Jupyter/kernels/bash
Code language: Bash (bash)
Fileメニュー>New launcherを表示すると、NotebookにBashが増えています!
NotebookのBashをクリックします。「echo "hoge" >hoge.txt」と入力して、「▶」ボタンをクリック。新しいセルに「cat hoge.txt」と入力して、「▶」ボタンをクリック。hoge.txtの内容を表示できました。
ssh接続できるでしょうか?新しいセルに「ssh taro@myhost.local」と入力して、「▶」ボタンをクリック。反応がありません。「■」ボタンをクリックすると、戻ってきました。password入力待ちで停止していたようです。
sshpassを使って、ssh接続してみました。新しいセルに「sshpass -P"ssh_password" ssh taro@myhost.local」と入力して、「▶」ボタンをクリック。ログイン後のメッセージが表示されましたが、そこで停止。なおMac OS Xのhomebrewにはsshpassはありませんでした。
ssh kernelのインストール
残念ながら、パスワード認証のSSH接続はできません。
パスフレーズ無しの公開鍵認証のSSH接続ができます。が、筆者の環境ではMac OS XもUbuntu 18.04でも動きませんでした。
ssh kernelをインストールします。
$ pip install -U sshkernel
$ python -m sshkernel install --user
$ jupyter kernelspec list
Available kernels:
python3 /Users/aoki.makoto/.pyenv/versions/3.8.2/lib/python3.8/site-packages/ipykernel/resources
bash /Users/aoki.makoto/Library/Jupyter/kernels/bash
ssh /Users/aoki.makoto/Library/Jupyter/kernels/ssh
Code language: Bash (bash)
Fileメニュー>New launcherを表示すると、NotebookにSSHが増えています!
~/.ssh/configにホストを登録して、ターミナルでssh接続確認します。
$ ssh myhost
Code language: Bash (bash)
NotebookのSSHをクリックします。「!ssh myhost」と入力して、「▶」ボタンをクリック。ssh接続できたことを確認して、「■」で停止します。
新しいセルで「%login myhost」と入力して、、「▶」ボタンをクリック。次のエラーで接続できませんでした。
[ssh] Not logged in.
Traceback (most recent call last):
File "/home/aoki/.pyenv/versions/3.8.2/lib/python3.8/site-packages/sshkernel/kernel.py", line 109, in do_execute_direct
self.assert_connected()
File "/home/aoki/.pyenv/versions/3.8.2/lib/python3.8/site-packages/sshkernel/kernel.py", line 218, in assert_connected
raise SSHKernelNotConnectedException
sshkernel.exception.SSHKernelNotConnectedException
Code language: Bash (bash)
おしいね!