簡體   English   中英

ssh遠程命令無法按預期工作(讀取問題)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM