2015-05-13 184 views
0

有一個我正在運行的腳本,我無法在遠程機器上安裝。等待通過ssh遠程運行的腳本的輸入

clear && printf '\e[3J' 
     read -p "Please enter device: " pattern 
     read -p "Enter date: (YYYY-MM-DD): " date 
     pfix=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 5 | head -n 1) 
     mkdir /home/user/logCollectRes/"${pfix}" 
     ssh xxx.xxx.xxx.xxx 'bash -s' < /usr/local/bin/SearchAdvanced.sh ${pattern} ${date} ${pfix} 

在該腳本中,我希望能夠使用read。

ls -g *"${pattern}"* 

read -p "Select one of these? [y/n] " "found"; 

我試過在讀取上加上-n以及在ssh上加上-t -t選項。正如您所看到的,該腳本提供的信息僅在腳本啓動後纔會顯示,因此我無法在本地計算機上使用該讀取。

編輯:讓我們說服務器B存儲5K計算機的系統日誌。文件名是通過使用設備的內部IP和結尾的日期給出的。

/var/log/remotes/192.168.1.500201505050736.gz 
/var/log/remotes/192.168.1.500201505050936.gz 
/var/log/remotes/192.168.1.500201505051136.gz 
/var/log/remotes/192.168.1.600201505050836.gz 
/var/log/remotes/192.168.1.600201505051036.gz 
/var/log/remotes/192.168.1.600201505051236.gz 

我希望能夠選擇從主腳本的IP地址,列出所有匹配該IP地址的文件,然後選擇我要scp將我的本地機器。

+0

我不認爲我明白你正試圖在這裏做。更具體的是什麼'$ {pattern}'/ etc。應該在這個位置做的變量? (它們不是'SearchAdvanced.sh'腳本的參數,因爲它不在本地運行,它們不是遠程'bash'的參數,因爲它們在錯誤的位置等等) –

回答

0

在與一些同事交談之後,我發現答案是運行兩個腳本:第一個語句將拉取ls -g結果並將答案指向本地計算機上的變量。然後用打開選項選擇文件打印輸出。第二屆腳本將採取這個問題的答案,並從遠程計算機

的SCP文件在主腳本

ssh xxx.xxx.xxx.xxx 'bash -s' < /usr/local/bin/SearchAdvanced.sh ${pattern} ${date} > ${result} 

然後作爲後續行動,

printf "${result}" 

read -p "Select file: "