编写Bash脚本以获取在容器中运行的Jupyter Notebook的令牌

时间:2019-02-11 22:57:30

标签: bash docker

我运行了Dockerized Jupyter Server,但我不想手动获取其访问令牌。所以我想写一个bash脚本来提取令牌并用它打开服务器

我尝试如下:

docker run --name notebook -w /home/fenics -v $(pwd):/home/fenics/shared -d -p 127.0.0.1:8888:8888 quay.io/fenicsproject/stable 'jupyter-notebook --ip=0.0.0.0'
token=`docker logs notebook 2>&1 | grep -o "token=[a-z0-9]*" | sed -n 1p`
google-chrome http://127.0.0.1:8888/?$token

但是,它不起作用。由于命令docker logs notebook与脚本或控制台在同一命令的同一行中不会输出任何内容。但是,如果您在终端中一一写入命令,则可以。 请告诉我如何解决问题(即使解决方案不同也可以),并解释为什么我的代码无法工作(我想知道,因为它已经是我要解决的第二个问题这样)

1 个答案:

答案 0 :(得分:0)

不要使用``而是$()。 我认为外壳可能有所不同。

我刚刚尝试过并且奏效了

token=$(docker logs notebook 2>&1 | grep -o "token=[a-z0-9]*"| sed -n 1p)