Search code examples
powershellcisco

Using Plink to change configs on multiple cisco switches


I have a PS script right now that lets me log into a range of switches one after another.

70..80 | % { plink "172.16.15.$_" -l enterusername -pw enterpassword}

This allows me to start at switch ending in .70 and once I am done and type exit, it automatically logs into the next one in sequence.

I want to create a text file that contains the changes I want to make to the running-config on the switch, such as maybe adding a user to 100 or so switches. How can I add to the PS script to make it so that it applies the changes to the config contained in the created text file? I am trying to automate changes to 100 edge switches vs having to type the config into each switch.

Or instead of pointing to a text file, can I somehow add the changes for the switch config right into the PS script?


Solution

  • When in doubt, read the documentation (emphasis mine):

    7.2 Using Plink

    This section describes the basics of how to use Plink for interactive logins and for automated processes.

    Once you've got a console window to type into, you can just type plink on its own to bring up a usage message. This tells you the version of Plink you're using, and gives you a brief summary of how to use Plink:

    Z:\sysosd>plink
    PuTTY Link: command-line connection utility
    Release 0.53
    Usage: plink [options] [user@]host [command]
           ("host" can also be a PuTTY saved session name)
    Options:
      -v        show verbose messages
      -load sessname  Load settings from saved session
      -ssh -telnet -rlogin -raw
                force use of a particular protocol (default SSH)
      -P port   connect to specified port
      -l user   connect with specified username
      -m file   read remote command(s) from file
      -batch    disable all interactive prompts
    

    So all you need to do is create your command file, and add it to the commandline:

    70..80 | ForEach-Object {
        plink "172.16.15.$_" -l enterusername -pw enterpassword -m 'C:\commands.txt'
    }