В настоящее время я запускаю проект с использованием нескольких Raspberry Pis. У меня уже есть система, в которой в случае сбоя кода открыть туннель ssh на порту 22. Однако, если два или более Raspberry Pis не работают, только один может открыть туннель на порту 22 (tcp) в регионе «au». для доступа к нему через ssh
def ssh():
ngrok.set_auth_token("MY_SECRET_TOKEN")
conf.get_default().region = 'au'
ssh = ngrok.connect(22, "tcp")
ngrok_process = ngrok.get_ngrok_process()
try:
ngrok_process.proc.wait()
except KeyboardInterrupt:
ngrok.kill
Я связался с службой поддержки Ngrok, и они упомянули, что на 22-м порту (tcp) может быть более одного туннеля.
На бесплатном плане у вас может быть только один открытый сеанс ngrok, но вы можете запустить до 4 туннелей через этот сеанс. Все ваши туннели могут быть подключены к порту 22, это нормально. - Поддержка Ngrok
и возможно, имеется в виду наличие разных туннелей портов (22, 80)
да, вы можете открыть несколько туннелей в регионе au за один сеанс
В настоящее время появляется эта ошибка:
Traceback (most recent call last):
File "/home/pi/main.py", line 210, in <module>
ssh()
File "/home/pi/main.py", line 30, in ssh
ssh = ngrok.connect(22, "tcp")
File "/usr/local/lib/python3.7/dist-packages/pyngrok/ngrok.py", line 245, in connect
api_url = get_ngrok_process(pyngrok_config).api_url
File "/usr/local/lib/python3.7/dist-packages/pyngrok/ngrok.py", line 162, in get_ngrok_process
return process.get_process(pyngrok_config)
File "/usr/local/lib/python3.7/dist-packages/pyngrok/process.py", line 295, in get_process
return _start_process(pyngrok_config)
File "/usr/local/lib/python3.7/dist-packages/pyngrok/process.py", line 465, in _start_process
ngrok_process.startup_error)
pyngrok.exception.PyngrokNgrokError: The ngrok process errored on start: Your account is limited to 1 simultaneous ngrok client session.\nActive ngrok client sessions in region 'au':\n - ts_1opHl3G90CmgGPiP6JM0IUpcXZM (IP)\r\n\r\nERR_NGROK_108\r\n.
Возможно ли открыть несколько ngrok.connect(22, "tcp")
туннелей с регионом «AU» за один сеанс?
ngrok.connect
- это новый сеанс клиента. Он не собирается повторно использовать существующий сеанс (для этого потребуется найти и подключиться к другому Pi или чему-то еще более сложному) - person Anon Coward   schedule 23.02.2021ngrok.connect()
является новым сеансом только потому, что вы запускаете его на двух разных Raspberry Pi. Выполнение несколькихngrok.connect()
в одной и той же среде выполнения Python присоединит последующие туннели к одному и тому же сеансу, и это будет работать нормально. Платная версия позволит вам запустить оба этих сеанса на двух разных Pi, но, как он сказал, даже в этом случае я не думаю, чтоngrok
выполнит то, что вы здесь собираетесь. - person alexdlaird   schedule 24.02.2021