У меня была эта логика в заданиях Jenkins для развертывания кода на удаленном хосте, который останавливал службу и запускался снова. Все работало нормально до недавнего обновления Centos до 7.7 (версия CentOS Linux 7.7.1908 (Core))
#!/bin/sh
set -e
# Start Remote SSH session and run commands to deploy on Remote Host
ssh -tt jenkins@sand8 << EOF
echo " ** REMOTE SESSION **"
sudo /bin/systemctl stop httpd
echo "Hello world!"
sudo /bin/systemctl start httpd
exit 0
EOF
Во время работы он просто застревает на остановке службы http и никогда не возвращается! Это вывод
bash-4.1$ ./sample.sh
tcgetattr: Inappropriate ioctl for device
Last login: Fri Oct 25 16:32:19 2019 from server
echo " ** REMOTE SESSION **"
sudo /bin/systemctl stop httpd
echo "Hello world!"
sudo /bin/systemctl start httpd
exit 0
[jenkins@sand8 ~]$ echo " ** REMOTE SESSION **"
** REMOTE SESSION **
[jenkins@sand8 ~]$ sudo /bin/systemctl stop httpd
[jenkins@sand8 ~]$ ^CKilled by signal 2. (killed here manually)
bash-4.1$
Я попытался отключить requiretty для пользователя jenkins в файле sudoers и запустить скрипт без pdeudoterminal (ssh -t), который работает, но мне нужен вывод из псевдотерминала, который раньше работал отлично