Я пытаюсь выполнить двоичный файл на моем ssh-сервере, как только я вхожу в систему. Однако я могу захотеть отправить обновление моего двоичного файла с помощью одного входа в систему ssh и выполнить его также. Мой текущий процесс для этого
cat exec | ssh user@host 'cat - > exec; chmod +x exec; ./exec'
Это не работает, поскольку, когда я нажимаю на точное выполнение, кажется, что он просто зависает. После этого я не получаю ответа от сервера. Странно то, что как только я загрузил файл, я могу просто выполнить
ssh user@host './exec'
и файл выполняется нормально. Я знаю, что идет процесс выполнения двоичного файла и chmod
правильно устанавливает исполняемый бит файла, который просто не будет выполняться в одной команде. У кого-нибудь есть предложения.
Используйте tar вместо cat, и tar также сохраняет режим, если exec имеет бит x.
tar cf - ./exec | ssh user @ server 'tar xf -; ./exec '
Я предполагаю, что ваш двоичный файл натыкается на escape-последовательность ssh. Нет гарантии, что ssh будет прозрачным для двоичного кода, но вы можете увидеть, добавляете ли-e none
'вашей команде ssh будет работать.