Read file into String and do a loop in Expect Script

前端 未结 3 1532
萌比男神i
萌比男神i 2020-12-05 12:30

What I am trying to do is to:

  1. Create a .exp file, which will read from the *.txt file from the same directory and parse all the conte
3条回答
  •  没有蜡笔的小新
    2020-12-05 13:11

    The code should read the contents of the two files into lists of lines, then iterate over them. It ends up like this:

    # Set up various other variables here ($user, $password)
    
    # Get the list of hosts, one per line #####
    set f [open "host.txt"]
    set hosts [split [read $f] "\n"]
    close $f
    
    # Get the commands to run, one per line
    set f [open "commands.txt"]
    set commands [split [read $f] "\n"]
    close $f
    
    # Iterate over the hosts
    foreach host $hosts {
        spawn ssh $user@host
        expect "password:"
        send "$password\r"
    
        # Iterate over the commands
        foreach cmd $commands {
            expect "% "
            send "$cmd\r"
        }
    
        # Tidy up
        expect "% "
        send "exit\r"
        expect eof
        close
    }
    

    You could refactor this a bit with a worker procedure or two, but that's the basic idea.

提交回复
热议问题