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.

Reply via email to