У меня очень ограниченные (почти нет) знания о том, как работает netcat, кроме того, что мне удалось заставить один Mac mini прослушивать порт 13370 [с помощью nc -l 13370] (для команд TCP?) и у меня есть MacBook, который подключился к Mac mini с помощью [nc 192.168.1.xxx 13370], и все, что я ввожу в терминале на MacBook, отображается (эхо?) на терминале Mac mini.

Я хочу, чтобы Mac mini мог открыть файл (также хранящийся на Mac mini) с другого устройства в той же локальной сети. Поэтому в настоящее время я использую MacBook, но в конечном итоге хочу отправить команды из приложения домашней автоматизации, которое я делаю, например, для воспроизведения видео на Mac mini, подключенном к экрану телевизора. Или любую другую команду, которую вы обычно можете выполнить в Терминале. Мое приложение не может подключиться к Mac mini с помощью SSH, поэтому я пытаюсь так.

Какую команду мне нужно отправить, чтобы открыть файл? Есть ли какой-то формат, который я должен использовать и т.д.? Благодарен за любую помощь.

3 ответа3

0

Спасибо всем за вашу помощь в этом, ваша помощь помогла мне после долгих проб и ошибок в конце концов найти способ сделать то, что я хотел. В конце концов я решил не пытаться соединиться с самим Mac через telnet, а напрямую подключить приложение VLC, которое имеет собственный сервер telnet через порт 4212. Я продолжал получать сообщение «отказано в соединении» при попытке подключиться к Mac по telnet, но VLC на порту 4212 подключается нормально, если в VLC установлен пароль.

Главное, что я хотел сделать, - это контролировать VLC, поэтому я доволен этим. Мое приложение также может отправлять команды так же, как это делает клиент Mac через терминал, так что все хорошо. Спасибо еще раз всем!

0

Средство netcat - это просто средство сетевого подключения. Он может прослушивать любой порт и подключаться к любому порту. Он может выводить эту информацию или даже передавать данные. Это тоже очень полезно. К сожалению, он только слушает и отправляет информацию; он не выполняет никаких команд сам. Таким образом, netcat не является инструментом для того, что вы хотите сделать. То же самое относится и к Telnet.

Для запуска команд на удаленном сервере вам понадобится программное обеспечение, которое работает на этом удаленном сервере, которое будет принимать эти команды. Инструмент для выполнения команд на удаленном сервере - SSH. На сервере прослушивания будет запущен демон SSHD. Вы могли бы попытаться найти способ взломать сервер каким-либо другим способом, но, поскольку у вас уже есть доступ к этому устройству, это действительно будет больше проблем, чем стоило бы, поскольку SSH уже существует.

Вы говорите, что ваше приложение не может подключиться к SSH, но если у него есть доступ к netcat , я бы порекомендовал использовать любой доступ, чтобы получить доступ к SSH, и выполнять ваши команды оттуда.

Если вы подключаетесь к netcat , что он прослушивает порт, и единственное, что может сделать ваше приложение - подключиться к этому порту, то вам нужно создать какой-то API или какое-то программное обеспечение. который может обрабатывать запросы через порт и использовать их для выполнения команд на терминале через SSH. Я нашел эту статью с некоторыми предложениями для этого в BASH:

https://unix.stackexchange.com/questions/314550/how-to-set-a-script-to-execute-when-a-port-receives-a-message

Как только вы сможете получить запрос в сценарий оболочки, вы можете либо заставить этот сценарий выполнять ваши команды напрямую, либо вы можете написать дополнительные сценарии, которые запускаются программным обеспечением для прослушивания. Я хотел бы, чтобы это программное обеспечение слушало на клиенте, а не на удаленном сервере, и вы могли бы получить к нему доступ через localhost (127.0.0.1). Кроме того, не забудьте добавить ключ SSH, чтобы ваше подключение к удаленному серверу не требовало использования каких-либо паролей. Эта статья может помочь с этим:

https://docs.joyent.com/public-cloud/getting-started/ssh-keys/generating-an-ssh-key-manually/manually-generating-your-ssh-key-in-mac-os-x

0

Вы можете создать обратную оболочку на MacOS (на компьютере 1) следующим образом:

bash -i >& /dev/tcp/ip-address-of-computer-2/1337 0>&1

А затем подключитесь к нему с другого компьютера (компьютер 2) с помощью одной из следующих команд netcat (зависит от реализации):

nc -l -p 1337

или же

nc -l 1337

Теперь вы можете вводить команды bash на компьютере 2, и они будут выполняться на компьютере, на котором запущена удаленная оболочка (компьютер 1).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .