我写了一个shell脚本来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
在第二个 block (ENDSSH)之前运行脚本似乎不会输出这些消息并成功执行。
是
ENDSSH
导致问题?
最佳答案
你可以这样写:
ssh -tt root@some.ip.address << ENDSSH
your code
exit
ENDSSH
你试试看。
关于macos - 伪终端不会分配,因为标准输入不是终端&困惑 : ttyname failed: Inappropriate ioctl for device,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58296997/