[英]ssh remote command not working as expected (problems with read)
我的服務器上有一個名為test.sh
的腳本:
#!/bin/bash
read -p "Select an option [1-4]: " option
echo "You have selected $option"
當我通過手動運行ssh時,我看到了這個:
me@me:~$ ssh root@server
root@server's password:
[...]
root@server:~# bash test.sh
Select an option [1-4]: 48
You have selected 48
當我以ssh遠程命令運行它時,我看到:
me@me:~$ ssh root@server 'bash test.sh'
root@server's password:
48
You have selected 48
我不滿意這個輸出,因為它缺少Select an option [1-4]:
提示字符串和原始腳本,我從派生的test.sh
包含了很多這樣的交互式對話字符串,我需要它們。
我知道read
會將它打印到stderr
所以我嘗試使用以下命令啟動腳本,以防stderr被省略,但輸出保持不變:
ssh root@server 'bash test.sh >&2'
ssh root@server 'bash test.sh' >&2
ssh root@server 'bash test.sh 2>&1'
ssh root@server 'bash test.sh' 2>&1
為什么會發生這種情況以及如何使ssh遠程命令按預期工作?
UPD
我已將test.sh
更改為:
#!/bin/bash
echo Connected
read -p "Select an option [1-4]: " option
echo "You have selected $option"
但輸出仍然缺少提示字符串:
me@me:~$ ssh root@server 'bash test.sh'
root@server's password:
Connected
66
You have selected 66
您需要在ssh
使用-t
選項將偽終端分配給ssh
會話:
ssh -q -t root@server 'bash test.sh'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.