A script to change password for all other servers


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting A script to change password for all other servers
# 8  
Old 02-21-2017
Hello,

OK, thanks for the feedback. If you try running it with the '-x' flag to Bash, which will make it show you each step as it executes, where does it hang ? So you'd want to run bash -x ./pwchange.sh pwchange.dat and see the line it's freezing on.
This User Gave Thanks to drysdalk For This Post:
# 9  
Old 02-21-2017
@vbe, thanks for the follow up. ssh -n hangs too. but, here is something interesting though. When I comment out all the servers except one in the .dat file, this is what I get:

Code:
root@tstnglbz1 # ./pwchange.sh pwchange.dat
ssh: #dr-prdcatap1: temporary name resolution failure
ssh: #munsbxlinux1: temporary name resolution failure
ssh: #munsbxlinux2: temporary name resolution failure
New password: Retype new password: Changing password for user mchavoshi.
passwd: all authentication tokens updated successfully.

So, ssh is tried for each server, but it fails name resolution because obviously it doesn't know what to do with #, but it does attempt all of them and it does change that one server who is not commented out correctly. STRANGE! But, when I uncomment all the servers in the .dat file, then it hangs.

BTW, in this instance my .dat file looked like the following:

Code:
#dr-prdcatap1
#munsbxlinux1
#munsbxlinux2
munsbxlinux3

---------- Post updated at 02:52 PM ---------- Previous update was at 02:48 PM ----------

Code:
root@tstnglbz1 # bash -x ./pwchange.sh pwchange.dat
+ filename=pwchange.dat
++ cat pwchange.dat
+ for server in '`cat $1`'
+ ssh -n dr-prdcatap1 'echo -e "TestPW12345!\nTestPW12345!" | passwd mchavoshi'


Last edited by rbatte1; 02-22-2017 at 07:56 AM.. Reason: Code tags
# 10  
Old 02-21-2017
Hi,

That at least is easy to explain. You can't really 'comment out' input. So what is happening is that 'ssh' is attempting to connect to the hosts whose names start with a hash symbol, and DNS resolution is failing for what are invalid hostnames. If you want them not to be considered by the script, you'd have to remove them entirely. Commenting out only works in scripts, and not in the input files handled by scripts (unless you yourself write the appropriate code to handle that).

In terms of the part of the script that is hanging, it does seem it's something to do with the actual core 'passwd' section itself. Before digging any further: if you manually try to run echo -e "TestPW12345!\nTestPW12345!" | passwd mchavoshi on the target server yourself at a Bash prompt, and not as part of a script, does it actually work, or does it hang even when you run it yourself ?
This User Gave Thanks to drysdalk For This Post:
# 11  
Old 02-21-2017
that command by itself on the command line works perfect. Please see below:
Code:
root@tstnglbz1 # ssh -n munsbxlinux3 'echo -e "TestPW12345!\nTestPW12345!" | passwd mcha>
New password: Retype new password: Changing password for user mchavoshi.
passwd: all authentication tokens updated successfully.
root@tstnglbz1 #

Moderator's Comments:
Mod Comment
Please wrap all code, files, input & output/errors in CODE tags as in the rules.
It makes it far easier to read and preserves multiple spaces for indenting or fixed width data.

Last edited by rbatte1; 02-22-2017 at 07:57 AM.. Reason: Code tags again.
# 12  
Old 02-21-2017
Hi,

OK, thanks. And it works on all four servers if done manually, and not just munsbxlinux3 ?
This User Gave Thanks to drysdalk For This Post:
# 13  
Old 02-21-2017
My shift ended an hour ago. I will test all 4 servers tomorrow and will let you know. Thanks so much for your assistance. Have a good evening.
# 14  
Old 02-21-2017
Id guess that passwd is refusing to take input from a non-terminal.

On *nix servers I find usermod(8) to be much more reliable for this sort of thing e.g.:

Code:
#!/bin/bash
##data file name is passed in as argument to .sh script
filename="$1"
crypt_pass=$(openssl passwd "TestPW")
for server in $(cat "$filename")
do
        ##newPassword and username are placeholders
        ssh $server usermod -p "$crypt_pass" SomeUser
done

Note: if you use openssl passwd (i.e. no password on the command line).
It will prompt on the terminal for password and a verification which is preferable to hard-coding it in the script as it won't be visible to utilities like ps

Last edited by Chubler_XL; 02-21-2017 at 08:23 PM..
This User Gave Thanks to Chubler_XL For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Shell script to set user password to never expire in UNIX servers

Hi, I have a requirement where in i need to write a shell script to set users password to never expire. I know the command which is used to perform the same .. which is chage command. But, could not figure out how to do the same in shell script. Could you please help me with the shell... (3 Replies)
Discussion started by: suren424
3 Replies

2. AIX

How to write a script to run without password on a batch of servers?

I need run a command such as ps -ef |grep xxx on a batch of servers, how to write a script to run it without password? don't need go in each server to check? Thanks (7 Replies)
Discussion started by: rainbow_bean
7 Replies

3. Shell Programming and Scripting

Script for login to servers with user name and password and execute commands

I am having the 15 servers which need to do the monitoring Hi I need a shell script, By which i can log in to multiple servers and execute the commands.. I need to specify the username and password in the scripts. Please help me to write the script so that it can login with username and... (5 Replies)
Discussion started by: nandan8a
5 Replies

4. Shell Programming and Scripting

Shell script to change the password on multiple servers in linux

Can any one please let me know the shell script to change the password for a particular user on multiple linux servers. (2 Replies)
Discussion started by: s_madras
2 Replies

5. Solaris

Change passwd for bulk servers using SSH script

Hi, I need to Change passwd for bulk servers using SSH script. I have one server, from which i can reach all the servers without password via SSH. There is some expect script, from which i can achieve it. Can any one help me out here. Thanks in advance. Vicky (1 Reply)
Discussion started by: vickyingle5
1 Replies

6. Shell Programming and Scripting

Script:Change password on 1000+ servers

Hello Folks Scenario : I have a linux box (expect tool installed) which connects to 1000+ other boxes (either Solaris or AIX or Linux ) with a specific id and password using SSH. I now wish to write a script (Shell and/or expect and/or Python) which will change this existing password to a... (1 Reply)
Discussion started by: ak835
1 Replies

7. Red Hat

Change password of linux servers remotely

Hi, I am very bad at scripting. I need help from scripting experts... I need to change password of around 100 linux remote servers. I have been given a script for changing the password that automates the task. however I do not understand the usage and meaning of the script, the script is an... (0 Replies)
Discussion started by: renuka
0 Replies

8. Shell Programming and Scripting

how to change root password using shell script with standard password

Hi Friends. I am new to scripting now i want to change the root password using the script with standard password. which is the easy scripting to learn for the beginner, Thanks in advance. (2 Replies)
Discussion started by: kurva
2 Replies

9. Shell Programming and Scripting

script to change passwords for the same user on multiple servers

I am trying to write a script to change passwords for the same user on multiple servers. My environment runs purely ssh / scp not rsh / rcp and therefore coping using rcp is not an option. I have been playing with expect to perform tasks but think there must be a better way. Has anyone got... (7 Replies)
Discussion started by: stolz
7 Replies

10. Shell Programming and Scripting

How to script to logon servers using id and password

Hey.. I am new in scripting.. I know a little bit of scripting.. I am facing some problem.. I need to create a script using which I may log on to a server (e.g. ftp) with ID and password.. thus copy a particular file to a local dir.. the commands required to do that I do know.. I am able to do it... (1 Reply)
Discussion started by: razeeev
1 Replies
Login or Register to Ask a Question