条件为

时间:2017-06-20 20:18:05

标签: bash shell

我是脚本开发的初学者。我想在一个脚本中完成4个任务: 1.通过ssh连接到机器1 2.检索数据并将其放入CSV文件中 3.将CSV文件发送到目录 4.通过ssh连接到机器2并执行步骤2和3

Fisrt测试:

#!/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 root@IP1

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

#exit connection
exit 

我认为我没有任何结果 我是否为2台机器执行任务?

由于

我正在尝试使用expect,因为我通过使用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上,假设任务应该在两台机器上完成

感谢您的反馈

我根据您的示例尝试此操作,但输出文件为空:     #!/ usr / bin / expect

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

1 个答案:

答案 0 :(得分:1)

您可以在同一个ssh调用中运行命令并导出到out文件,如下所示:

# ...
# first machine command
ssh root@IP1 "<COMMAND>" > /PATH_LOCAL_TO_SAVE_FILE/IP1.csv

# second machine command
ssh root@IP2 "<COMMAND>" > /PATH_LOCAL_TO_SAVE_FILE/IP2.csv