Learn how to run the same/repetitive command on multiple Linux servers from the Windows machine. This trick uses command line putty ‘plink’ utility.
One of the major concerns for sysadmin is to run the same/repetitive command on multiple Linux servers in infra when there is no centralized tool available. In this post, we are going to see how to run a command on multiple Linux servers in one go. There is no need of saving your account password anywhere and even no need to have
expect function in your source machine!
- Windows machine with plink downloaded on it (download plink here)
- Linux servers should be reachable from a windows machine
How to do it
plink is a putty command-line utility. Using plink we will be able to connect to the server by supplying IP, username, password on the command line. plink can be invoked from a command prompt on windows.
C:\Users\noname\Desktop>plink -ssh email@example.com -pw password@123 (hostname; date) testserver Tue Nov 1 12:54:33 IST 2016 C:\Users\noname\Desktop>
Goto Windows command prompt by typing
cmd in a run window (windows key + r). Navigate to folder where plink executable is kept and then type in plink command as above.
- ssh: protocol to connect
- id@server IP
- pw: account password
- Commands to execute on Linux server in braces.
This is how plink works. Now to execute the same command on multiple servers we see below example. We will connect to 3 servers and execute hostname & date command.
First, put all 3 server’s IP addresses in single file
ip_list.txt. Then execute simple for loop on that file as below in command prompt. This is a very basic batch script.
C:\Users\noname\Desktop>FOR /F "tokens=1,2* delims=," %G IN (C:\Users\noname\Desktop\ip_list.txt) DO plink -ssh user1@%G -pw password@123 (hostname; date) testserver Tue Nov 1 12:54:33 IST 2016 testserver1 Tue Nov 1 12:54:36 IST 2016 testserver2 Tue Nov 1 12:54:39 IST 2016 C:\Users\noname\Desktop>
Voila! all server’s command output is there! Commands executed on all servers in one go.
This is very useful when you need to check some single line outputs from all servers or if you want to run account refresh commands on all servers in one go.