有条件的脚本

问题描述:

我是脚本开发的初学者。我想在一个脚本中完成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

谷歌搜索'网站:*.com脚本思科ios bash ssh'可能是你最好的地方开始在这里。 –

您可以像这样在相同的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