Якщо ні -M
параметр, ні змінна env не вказано, який порт використовується для моніторингу?
У моїх кількох тестах на клієнті Kubuntu були використані випадкові високі порти в діапазоні приблизно (моя оцінка) 30000-60000
. Порівняйте: ефемерний порт . Я маю на увазі, що перший ( port
) був обраний випадковим чином, другий - трохи вище нього ( port+1
).
-M
без належного аргументу ( autossh -M -- …
або autossh -M foo …
) виходить негайно; він не друкує жодної помилки, але статус виходу є 1
.
autossh -M 0 …
дійсно вимикає функцію.
Але ...
Я спробував проаналізувати джерело і не знайшов цієї випадковості. Потім я виявив це:
$ type autossh
autossh is /usr/bin/autossh
$ file /usr/bin/autossh
/usr/bin/autossh: POSIX shell script, ASCII text executable
$ head -n 4 /usr/bin/autossh
#!/bin/sh
# little wrapper to choose a random port for autossh, falling back to $fallback_port
fallback_port="21021"
$ tail -n 1 /usr/bin/autossh
exec /usr/lib/autossh/autossh "$@"
$ file /usr/lib/autossh/autossh
/usr/lib/autossh/autossh: ELF 64-bit LSB executable, …
Це означає, що в Kubuntu у мене є обгортка, яка випадковим чином вибирає порт, якщо він не вказаний -M
нормою AUTOSSH_PORT
. Я не публікую тут повний код, але я прочитав його: якщо обгортка не може випадково потрапити на невикористану пару портів (тобто port
і port+1
) за 42 спроби, він, нарешті, намагається 21021
і 21022
; якщо ці порти неможливо використовувати, обгортка виходить із помилкою.
Якщо обгортку вдасться, вона експортує перший порт як AUTOSSH_PORT
і виконує real autossh
( /usr/lib/autossh/autossh
). Цей виконуваний файл вимагає -M
або в AUTOSSH_PORT
іншому випадку він не запуститься.
Моя остаточна відповідь: немає порту моніторингу ванілі за замовчуваннямautossh
. Ви повинні встановити AUTOSSH_PORT
або використовувати -M
. Це незручно, звідси і обгортка. Ви можете мати або не мати його у вашому Linux. Можливо, деякі аромати Linux використовують обгортки, які встановлюють та використовують фіксований порт за замовчуванням.