Intereting Posts
как запустить команду в уже открытом терминале через сценарий оболочки Почему существуют два ядра под `/ lib / modules` на 16.04 LTS? Уменьшить время ожидания GRUB Появляются окна, которые появляются за активным окном? Проблемы с установкой MySQL на Ubuntu 15.04 Могу ли я установить Ubuntu 16.04 без повреждения Windows 10 в двойной загрузке? Установка пакета + зависимостей и удаление их всех Используйте bash для извлечения числа из квадратных скобок Как создать запись рабочего стола для приложения, расположенного в пользовательском пространстве? Как сделать сетевое подключение ad-hoc? Есть ли способ сделать полное шифрование диска после установки? Как сделать ffmpeg исполняемым везде? Проблемы с DNS с Ubuntu 16.04LTS Nautilus: пользовательское действие для выбранных файлов с помощью короткой клавиатуры Обновление Evolution в 14.04? Нет PPA и огромные зависимости для создания

Скрипт для запуска jupyter-ноутбуков с удаленного сервера

У меня есть сервер (сервер Ubuntu 16.04), который запускает jupyter notebooks и локальную машину (Mac), где я использую google-chrome для визуализации этих ноутбуков. Для этого я должен:

  1. Запустите jupyter ноутбук на сервере:

    jupyter notebook –no-browser –port = $ {remotePort}

  2. Укажите туннель SHH на моей локальной машине:

    ssh -f $ {username} @ $ {serverIP} -L $ {localPort}: localhost: $ {remotePort}

Чтобы автоматизировать этот процесс, я создал скрипт jupyter.sh (описанный ниже), который я запускаю только на своей локальной машине:

bash jupyter.sh -u myUserNameInServer 

Он работает безупречно. Он может выполнять предыдущие два шага, а также автоматически открывает страницу jupyter в своем веб-браузере. Тем не менее, я хотел бы знать, есть ли лучший способ сделать это. Я был бы очень признателен за ваши комментарии.

Заранее спасибо.

 ####################################################################### ## 1. SET VARIABLES TO STABLISH THE SSH CONNECTION # Get username from command line: bash jupyter.sh -u username while [[ $# -gt 1 ]] do key="$1" case $key in -u|--username) username="$2" shift # past argument ;; esac shift # past argument or value done # Specificy other variables to stablish the ssh connection localPort=8890 browser="Google Chrome" serverIP=the_IP_of_the_server ####################################################################### # 2. RUN JUPYTER IN REMOTE SERVER out=$(ssh -T ${username}@${serverIP} < jupyter.sh # Run jupyter in the background screen -S jupyter -d -m bash jupyter.sh fi # Output the remote port number. If there is more than 1, get the first one jupyter notebook list | grep localhost | awk '{split(\$0,a,"localhost:");split(a[2],b,"/"); print b[1]}' | head -n1 HERE ) ####################################################################### # 3. SET SSH TUNNEL # Pass the remote port to a variable in the local machine remotePort=$(echo $out | awk '{print $NF}') # Start listening in local port 8890 if that port isn't already in use # num equal 1 if port number is already in use, 0 otherwise num=$(netstat -lnt | awk 'BEGIN{x=0} ($6 == "LISTEN" && $4 ~ "8890$"){x=1}END{print x}') if [ $num -eq 0 ] then ssh -f ${username}@${serverIP} -L ${localPort}:localhost:${remotePort} -N fi # # Open jupyter in browser open -a "${browser}" http://localhost:${localPort}/tree?token=${username} & 

Вы можете использовать «конфигурационный файл jupyter», который по умолчанию не активирован, поэтому вам нужно выполнить команду fisrt (на вашем сервере):

 jupyter notebook --generate-config 

Затем в сгенерированном «jupyter_notebook_config.py» в папке «/.jupyter»: раскомментируйте строку и измените значение.

Таким образом вы можете настроить конфигурацию, такую ​​как пароль вместо токена, каталог по умолчанию, порт и т. Д. Сделайте так, как вы хотите, это может быть правильный способ выполнить некоторую «конфигурацию jupyter» в вашем скрипте, а затем сохранить все остальное.