Hi all,
I have a script that was wrote in tcl/expect to shutdown ports. This is
necessary to test our master/backup environment. Now I have to convert this
one to ansible. I'm learning this new one language and I'm stuck in this
step:
tcl code to shutdown ports:
The tcl/expect capture the cisco ios command "sh ip int br | up" and save
it in a temp file.
FastEthernet0/0 169.255.0.1 YES NVRAM up
up
FastEthernet1/1 unassigned YES unset up
up
FastEthernet1/6 unassigned YES unset up
up
FastEthernet1/10 unassigned YES unset up
up
Vlan1 unassigned YES NVRAM up
up
This is the part of code responsable for this step:
proc full_buffer {} {
while {1} {
expect {
-re "(\[^\r]*\)\r\n" {
set output "$expect_out(buffer)"
set buffer [open "output.log" a]
puts $buffer $output
close $buffer
}
timeout {
set output "$expect_out(buffer)"
break
}
}
}
}
send "sh ip int br \| up\r" ; full_buffer
set f [open "output.log" r]
foreach a [split [read -nonewline $f] \n] {
set intf [lindex $a 0]
if { [regexp {^F|^G|^P} $0] } {
send "conf t\r"
send "interface $0\r"
send "shutdown\r"
}
}
close $f
tcl code to bring back interfaces:
set f [open "output.log" r]
foreach a [split [read -nonewline $f] \n] {
set intf [lindex $a 0]
if { [regexp {^F|^G|^P} $0] } {
send "conf t\r"
send "interface $0\r"
send "no shutdown\r"
}
}
close $f
At the ansible code, I run just until the copy of the command "sh ip int br
| i up" and it's working.
tasks:
- name: capturing the command "show ip int br" on {{ inventory_hostname
}}
ios_command:
commands:
- sh ip int br | i up
provider: "{{ cli }}"
register: result
tags: inft
- debug: var=result
tags: result_debug
- name: copy interface status up to a temp file
copy:
content: "{{ result.stdout[0] }}"
dest: "~/ANSIBLE/{{ inventory_hostname }}.cfg"
tags: copy
What I need now, is a form way to open the file 'output.log', read it line
by line and run the command "shutdown" at the remote host. After that, I
have to bring back again the interfaces when the test of environment is
finished with the command "no shutdown". I'm looking for the "script"
command and even more, the "expect" command, but none of that work for me
until now.
--
You received this message because you are subscribed to the Google Groups
"Ansible Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/ansible-project/d523e023-9bb6-436e-8643-16c4bdf8a4fc%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.