Псевдо-терминал не будет выделен, потому что stdin не является терминалом и беспорядок: сбой ttyname: неподходящий ioctl для устройства - PullRequest
0 голосов
/ 09 октября 2019

Я написал сценарий оболочки для scp, ssh, удалить каталог, разархивировать и удалить файл zip

#!/bin/bash

tar -czf zipfile.tar.gz ./* .??*
scp zipfile.tar.gz root@some.ip.address:/var/www/html/wp-content/themes
rm zipfile.tar.gz

ssh root@some.ip.address << 'ENDSSH'
cd /some/directory
rm -rf zipfile
mkdir zipfile
tar xf zipfile.tar.gz -C zipfile
rm zipfile.tar.gz
ENDSSH

Я замечаю, что файлы успешно переданы и разархивированы. Zip-файл также успешно удален с сервера. Однако я заметил, что я получаю эти сообщения в терминале

zipfile.tar.gz  100% 224KB ...
Pseudo-terminal will not be allocated because stdin is not a terminal.
...
Welcome to Ubuntu 18.04.3 LTS...
...

0 packages can be updated.
0 updates are security updates.

mesg: ttyname failed: Inappropriate ioctl for device

Запуск сценария до того, как второй блок (ENDSSH), кажется, не выводит эти сообщения и успешно выполняется.

IsENDSSH вызывает проблему?

1 Ответ

0 голосов
/ 09 октября 2019

вы можете написать так:

ssh -tt root@some.ip.address << ENDSSH
your code
exit
ENDSSH

попробуйте.

...