有条件的脚本
问题描述:
我是脚本开发的初学者。我想在一个脚本中完成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
答
您可以像这样在相同的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
有这里有一个更大的问题。只有'ssh'退出后''''才会运行。这是写的,它是在*'ssh'后面运行的东西,而不是*发送到*'ssh'的东西。 –
btw,'machine1 = IP1'运行一个名为'IP1'的命令,其中环境变量'machine1'设置为一个空值;由于空间的原因,它不是*任务。这是http://shellcheck.net/会自动识别的问题。 –
谷歌搜索'网站:stackoverflow.com脚本思科ios bash ssh'可能是你最好的地方开始在这里。 –