2017-06-20 76 views
0

我是腳本開發的初學者。我想在一個腳本中完成4個任務: 1.通過ssh連接到機器1 2.檢索數據並將其存入CSV文件 3的。發送CSV通過SSH文件到一個目錄 4.connect機器2和執行步驟2和3有條件的腳本

最前一頁測試:

#!/bin/bash 
#Settings 
DATE=$(date +%Y_%m_%d) 
DATE1=$(date +%d/%m/%Y) 
HIER=$(date -d '1 day ago' "+%Y-%m-%d") 
HEURE=$(date +"%T") 
#Ip adress of the machine 
machine1= IP1 
machine2= IP2 

#Connexion SSH OLT1 
ssh [email protected] 

#Command for geting data on machine 
enable 
config 
display XXXX > IP1.csv 

#exit connection 
exit 

我沒有任何結果,所以我想 讓我的一個循環執行2臺機器的任務?

感謝

我想TU使用期望,因爲我通過使用SSH和shell腳本找到RSA密鑰問題

#spawn ssh $host -l $user 
expect "login:" 
send "root\r" 

expect "passe:" 
send "test\r" 

expect -re $prompt 
send "terminal length 0\r" 

expect -re $prompt 
send "enable\r" 

expect -re $prompt 
send "config\r" 

expect -re $prompt 
send "display .....\r" 

expect -re "\r\nend\r\n" 
send "exit\r" 

我不知道我可以把結果上的CSV文件一個目錄? 此外,我可以把IP上#spawn假定任務應該在2臺機器

感謝來完成您的反饋

我嘗試thisaccording到您的樣品,但輸出中的文件是空的! #/ USR /斌/期望

spawn ssh X.X.X.X -l root 

expect "User password:" 
send "admin\n" 
expect -re "device>" 
send "enable\r" 
expect -re "device#" 
send "config\r" 

expect -re "device(config)#" 
send "display .......\r" 
expect -re "{ <cr>||<K> }:" 
send "\r" 
set date [timestamp -format %C%y%m%d] 
log_file -noappend /home/device/CSTtest.csv 
+2

有這裏有一個更大的問題。只有'ssh'退出後''''纔會運行。這是寫的,它是在*'ssh'後面運行的東西,而不是*發送到*'ssh'的東西。 –

+1

btw,'machine1 = IP1'運行一個名爲'IP1'的命令,其中環境變量'machine1'設置爲一個空值;由於空間的原因,它不是*任務。這是http://shellcheck.net/會自動識別的問題。 –

+0

谷歌搜索'網站:stackoverflow.com腳本思科ios bash ssh'可能是你最好的地方開始在這裏。 –

回答

1

您可以像這樣在相同的SSH調用運行命令,並出口到了所有的文件:

# ... 
# first machine command 
ssh [email protected] "<COMMAND>" > /PATH_LOCAL_TO_SAVE_FILE/IP1.csv 

# second machine command 
ssh [email protected] "<COMMAND>" > /PATH_LOCAL_TO_SAVE_FILE/IP2.csv 
+0

謝謝@IgorUchôa,但文件是空的。「display command」沒有執行。 – lalarita

+0

你想用display命令做什麼?如果它與用於在Linux中顯示圖像的顯示器相同,請確保在遠程計算機上安裝或激活了display命令。如果您僅嘗試檢索文本數據,則可以使用文本查看器(例如,「less」命令)。 –

+0

,是在遠程計算機上激活並顯示「顯示命令」。我嘗試連接到機器,讀取dat並將結果保存在一個文件中。最後用crontrab,每天運行腳本一次 – lalarita