Мне нужно создать способ передачи команд и передачи файлов с хост-сервера на плату разработки.Протокол связи с использованием netcat
- Доступ только к плате осуществляется через хост-сервер (проводное Ethernet-соединение).
- На хост-сервере и на плате работает Linux.
- У меня есть возможность изменить среду Linux на плате.
- У меня нет возможности изменить среду хост-сервера.
- Я НЕ знаю, какие пользователи должны подключаться к плате.
- Соединение между хост-сервером и платой не обязательно должно быть безопасным.
Прямо сейчас, я использую netcat для своих нужд, но столкнулся с проблемами надежности. Может ли кто-нибудь указать мне на некоторые инструменты, которые лучше подходят для моих потребностей и, возможно, более высокую производительность, пожалуйста?
Мое текущее решение:
Скрипт постоянно работает на борту:
while [ 1 ] ; do
# Start a netcat server, awaiting a file.
nc -l -p 1357 > file.bin
# Acknowledge receipt of file.
status=fail
while [ ${status} -ne 0 ] ; do
status=$(echo 0 | nc <host_ip> 2468 2>&1)
done
# Wait for a command.
nc -l -p 1357 -e /bin/sh
# Acknowledge receipt of command.
status=fail
while [ ${status} -ne 0 ] ; do
status=$(echo 0 | nc <host ip> 2468 2>&1)
done
done
Единственный способ пользователи имеют доступ к плате через скрипт на сервере:
# Send over a file.
cat some_file.bin | /bin/nc -w 10
# Wait for acknowledge.
if [ $(nc -l 2468) -ne 0 ] ; then
exit # Fail
fi
# Send a command.
echo "<some_command>" | nc -w 10 <board ip> 1357
# Wait for acknowledge.
if [ $(nc -l 2468) -ne 0 ] ; then
exit # Fail
fi
Причина, по которой я сейчас использую netcat, заключается в том, что я не знаю, как использовать SSH или SCP без пароля, если:
- Я не могу создать ключ SSH для всех, кому нужен доступ к плате, тем более, что я не знаю, кто его будет использовать.
- Я не могу установить sshpass или ожидать, так как у меня нет контроля над сервером.
Помогите, Спасибо.
не является оператором OPs «У меня нет возможности изменять среду хост-сервера». исключить 'изменение конфигурации клиента SSH на хосте? Всем удачи. – shellter
@shellter Если OP может запускать 'ssh board' на хосте, он также должен иметь возможность запускать' ssh -o HostbasedAuthentication board'. – damienfrancois