我喜欢使用从笔记本电脑远程连接到PC的Jupyter笔记本电脑。我希望通过ssh自动化连接到PC的过程,在PC中初始化Jupyter笔记本,然后在我的笔记本电脑上打开浏览器以访问该笔记本。目前,这些是我采取的步骤:
jupyter notebook --no-browser --port=8889
ssh -N -L localhost:8887:localhost:8889 username@PC_IP_address
将远程端口8889绑定到本地端口8887 PC和笔记本电脑都在同一个网络上。我通过在Iterm3中创建执行脚本的配置文件,在本地计算机上自动化2.我希望自动化整个过程,以便使用一个别名,我可以在本地计算机上启动远程笔记本。非常感谢。
答案 0 :(得分:3)
如果我是你,我会使用一个功能。把它放在.bashrc
jupy(){
ssh username@PC_IP_address jupyter notebook --no-browser --port=8889
ssh -N -L localhost:8887:localhost:8889 username@PC_IP_address
firefox https://localhost:8887
}
答案 1 :(得分:1)
经过多方努力,这是一个适合我的hacky解决方案
jupykaggle(){
# arguments: projectfolder environmentname
competitionfolder=$1
envname=$2
ssh USER@IPADDRESS "cd Dropbox/data_science/kaggle/${competitionfolder};
source /home/USER/anaconda2/bin/activate ${envname};
/home/USER/anaconda2/bin/conda env list;
kill \`lsof -t -i:8889\`;
/home/USER/anaconda2/envs/${envname}/bin/jupyter notebook --no-browser --port=8889; exit"
# after notebook is initialized in remote host, Control+c to exit this ssh session
# and enter the second one to bind the remote port 8889 to local port 8887
echo "Bind remote port 8889 to local port 8887"
ssh -N -L localhost:8887:localhost:8889 USER@IPADDRESS
}
alias jupybrowser='open -a /Applications/Google\ Chrome.app http://localhost:8887'
我执行
jupykaggle projectfolder environmentname
进入项目目录,激活虚拟环境,终止我需要使用的端口中运行的进程,并使用该端口初始化jupyter笔记本(使用虚拟环境中的安装)。然后我退出此ssh会话并进入另一个ssh会话,我将远程端口8889绑定到本地端口8887.最后一个别名只是打开本地主机8887中的Chrome浏览器以打开笔记本。
我仍然需要从远程笔记本复制并粘贴令牌,但这没关系。与我以前的工作流程相比,这仍然显着减少了步骤。
欢迎提出改进建议。