python - 使用 jupyter notebook spawn 复制 ssh 行为

标签 python ubuntu ssh jupyterhub

OBS1:这个问题重复了here正如韦恩在评论中所建议的那样,但仍然没有答案。
我有一台运行 ubuntu 的远程机器,我在其中配置 jupyterhub 笔记本服务器。服务器已经启动并运行,但是,我注意到它只适用于以前通过 ssh 登录机器的用户。
对于以前从未通过 ssh 登录过机器的用户,服务器会生成一个登录屏幕,但登录后会出现以下图像:
enter image description here
它之前显示了不同的目录路径(我的意思是与/user/john.snow 不同),但我将 jupyterhub spawner 类配置为通过添加以下行来创建目录:

if os.path.exists('mkdir /home/FOLDER/' + env['JUPYTERHUB_USER'])!=True:
    os.system('mkdir /home/FOLDER/' + env['JUPYTERHUB_USER'])
(如果有用,我会在问题末尾附加完整的生成器代码)
由于我不打算测试 jupyter notebook 查找的每个目录,因此我希望在计算机中找到 ssh 配置文件,并使用 spawner 模拟 ssh 为特定用户所做的事情。
可能吗?我尝试查看/etc/ssh/ssh_config 和类似内容,但几乎所有文件都被注释并且语法很神秘。
感谢您的任何建议。
OBS:完整的生成器代码:
import os, getpass
import yaml
from jupyterhub.spawner import Spawner, LocalProcessSpawner

class spawner(LocalProcessSpawner):

    def start(self):
        # get environment variables,
        # several of which are required for configuring the single-user server
        env = self.get_env()
        ret = super(spawner, self).start()
        if os.path.exists('mkdir /home/FOLDER/' + env['JUPYTERHUB_USER'])!=True:
            os.system('mkdir /home/FOLDER/' + env['JUPYTERHUB_USER'])
        os.system('mkdir /home/FOLDER/' + env['JUPYTERHUB_USER'] + '/notebooks')
        os.system('cp -r /usr/local/scripts/notebooks/* /home/FOLDER/' + env['JUPYTERHUB_USER'] + '/notebooks/')
        os.system('chmod -R 777 /home/FOLDER/' + env['JUPYTERHUB_USER'] + '/notebooks/')



        return ret

最佳答案

我找到了解决问题的方法。由于 spawner 代码试图将 ssh 创建的文件夹访问到机器中,因此这些行

if os.path.exists('mkdir /home/FOLDER/' + env['JUPYTERHUB_USER'])!=True:
        os.system('mkdir /home/FOLDER/' + env['JUPYTERHUB_USER'])
如果此文件夹不存在,则尝试创建它。但是,ssh 生成了其他一些神秘的配置,我无法复制。相反,我发现 ssh 配置文件位于/etc/skel,所以我从 spawner 中删除了这两行,而是添加了:
os.system('su ' + env['JUPYTERHUB_USER'])
        os.system('source /etc/skel/.bashrc')
        os.system('source /etc/skel/.profile')
        os.system('exit')
'su env["JUPYTERHUB_USER"]' 和 'exit' 行在那里,因为生成器似乎以 root 身份执行。它解决了新用户,但已经产生红条的老用户仍在处理它。似乎在机器中删除他们的主文件夹解决了这个问题。

关于python - 使用 jupyter notebook spawn 复制 ssh 行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72126652/

相关文章:

python - 在Windows中安装Jupyter Notebook

python - PDFMINER工具pdf2txt抓取数据顺序

xml - 使用 AWK 检索特定 XML 标记之间的文本

qt - QSharedPointer dynamicCast 和 objectCast 在 ubuntu 上失败

linux - 如何使用 bash 替换多行?

linux - ssh 端口转发 ("ssh -fNL") 无法通过 expect spawn 自动提供密码

python - 使用Python从公钥获取RSA指数和模数

python - 带有gunicorn的heroku上的Bottle应用程序 - foreman在本地工作但不在heroku上工作

python - 我可以在不知道 paramiko 类型的情况下读取 SSH 私钥吗?

apache - 由于 DOS 攻击而无法访问 Plesk Admin,通过 SSH 阻止 IP 地址?