dockerfile 如何实现jupyterlab ssh docker run 启动密码设置

1、之前jupyter lab的密码设置是,每次启动以后 都需要 设置,然后重新启动服务,管理起来很困难。所以想着如何在 docker run 的时候,就把 jupyter lab 的密码设置了。

想法就是,设置docker run --env 的环境变量,传递到容器内部,容器的启动脚本自动执行设置命令,设置密码,而脚本的书写是重点,现在开源如下,需要的伙伴可以自己拿。

docker run 需要设置环境变量 JUPYTER_PASSWORD 。。  。。 把如下的脚本写在startup.sh 中。      密码被写入 .jupyter/jupyter_lab_config.py  中。。。。。

import os
import fileinput
import hashlib
import random
from ipython_genutils.py3compat import cast_bytes, str_to_bytes

# Get the password from the environment
password_environment_variable = os.environ.get('JUPYTER_PASSWORD')
# Hash the password, this is taken from https://github.com/jupyter/notebook/blob/master/notebook/auth/security.py
salt_len = 12
algorithm = 'sha1'
h = hashlib.new(algorithm)
salt = ('%0' + str(salt_len) + 'x') % random.getrandbits(4 * salt_len)
h.update(cast_bytes(password_environment_variable, 'utf-8') + str_to_bytes(salt, 'ascii'))
password = ':'.join((algorithm, salt, h.hexdigest()))

# Store the password in the configuration
setup_line = "#c.NotebookApp.password = ''"
new_setup_line = setup_line.replace("''", "u'" + password + "'")
new_setup_line = new_setup_line.replace("#", "")
setup_file = os.getenv("HOME") + "/.jupyter/jupyter_lab_config.py"

# for line in fileinput.input(setup_file, inplace=True):
#     line.replace(setup_line, new_setup_line)

# for line in fileinput.input(setup_file, inplace=True):
#     line.replace("#c.NotebookApp.password_required = False", "c.NotebookApp.password_required = True")
fp =open(setup_file, "a+", encoding="u8") 
fp.write("\n"+new_setup_line)
fp.close()

 

2、上文介绍了lab 的密码自动设置,现在同样开源 ssh 的密码设置,之前也搜了很多,但是大家都是介绍如何自动登陆ssh 的,而介绍如何自动设置密码却很少,而且问题也多,也是通过 docker run 的环境变量来设置,环境变量是SSH_PASSWD。

同样需要写到 startup.sh 文件中。 

#!/usr/local/bin/expect
set timeout 20
set user root
set new $env(SSH_PASSWD)
set ip localhost
spawn -noecho "passwd"
expect "输入新的 UNIX 密码:*"  
send "$new\n" 
expect "重新输入新的 UNIX 密码:*"
send "$new\n"

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值