954,180 Members — Technology Publication meets Social Media
Username:
Password:
Lost login information?
Have something to say? Contribute New Article Reply to this Article

Change Password In A Shell Script

Hi All,

I have a problem.

I need to write a shell script to change the password. The user may want to change his own password by this script.

He will have to provide the required 3 parameters i.e. old password, new password and retype new password as arguments in command line.

like, ./pass.sh old new new

How do I do it. I am in a fix. :(

I am not allowed to use expect etc.

Please help me.

Thanks.
Asimananda

captor
Newbie Poster
1 post since May 2005
Reputation Points: 10
Solved Threads: 0
 

You shouldn't have to do it. Linux has this built in with

passwd

TKS
Posting Pro in Training
470 posts since Jan 2004
Reputation Points: 108
Solved Threads: 18
 

i am using a shell script which changes the password of all the servers in the network and also of the host server (as per your requirement) but it uses except.

Earlier i had a perl script to change the password.

If you want i can give you both the scripts and you can modify them as per your requirement.

Amit

kamitsin
Newbie Poster
16 posts since Apr 2006
Reputation Points: 10
Solved Threads: 0
 

Sounds like a class asignment.
try a here document

oldpw="$1"
newpw="$2"
passwd <<EOF
"$1"
"$2"
"$2"
EOF
jim mcnamara
Junior Poster
180 posts since May 2004
Reputation Points: 62
Solved Threads: 10
 
i am using a shell script which changes the password of all the servers in the network and also of the host server (as per your requirement) but it uses except. Earlier i had a perl script to change the password. If you want i can give you both the scripts and you can modify them as per your requirement. Amit

Amit,

I would be very interested in your scripts. Would you mind sending them to me at . This sounds exactly what I am needing.
Thanks

PS

webtrekker
Newbie Poster
1 post since May 2006
Reputation Points: 10
Solved Threads: 0
 

I have attached the modified script beacuse the original script is for changing the password across multiple servers and i guess this is not what you require.

You need to execute the script from root user. It will create a log file in the directory from which you are executing the script.

You can change the password for root and a user but you can do a small modification and the script will change the password for root and any user.

Amit

Attachments ChangePassword.exp_.txt (2.69KB)
kamitsin
Newbie Poster
16 posts since Apr 2006
Reputation Points: 10
Solved Threads: 0
 
I have attached the modified script beacuse the original script is for changing the password across multiple servers and i guess this is not what you require. You need to execute the script from root user. It will create a log file in the directory from which you are executing the script. You can change the password for root and a user but you can do a small modification and the script will change the password for root and any user. Amit

Hi Amit,

Do you have a similar script (only ChangePasswd) in Perl? If you do can you please share it.

Thanks,
Vivek.

vivekp
Newbie Poster
1 post since Jun 2006
Reputation Points: 10
Solved Threads: 0
 

Hi Amit,

I am looking for a script just like yours: I have many servers and I need to change their root psw.
Could you post the entire script?
thanks a lot

Ezra

I have attached the modified script beacuse the original script is for changing the password across multiple servers and i guess this is not what you require. You need to execute the script from root user. It will create a log file in the directory from which you are executing the script. You can change the password for root and a user but you can do a small modification and the script will change the password for root and any user. Amit
ezradibiase
Newbie Poster
1 post since Jul 2006
Reputation Points: 10
Solved Threads: 0
 
I have attached the modified script beacuse the original script is for changing the password across multiple servers and i guess this is not what you require. You need to execute the script from root user. It will create a log file in the directory from which you are executing the script. You can change the password for root and a user but you can do a small modification and the script will change the password for root and any user. Amit


Hi Amit,

Im looking for the script which you have for changing password on multiple servers. Would you mind sending them to me at.

Thanks and regards,
VinodKumar

VinodKumar
Newbie Poster
1 post since Aug 2006
Reputation Points: 10
Solved Threads: 0
 
I have attached the modified script beacuse the original script is for changing the password across multiple servers and i guess this is not what you require. You need to execute the script from root user. It will create a log file in the directory from which you are executing the script. You can change the password for root and a user but you can do a small modification and the script will change the password for root and any user. Amit

Hello Amit,

I am trying to get a perl script to communicate with the passwd program. I do not have access to the modules expect or IO::Pty. I also do not have access to the expect utility.

So far I have found a free pty/tty pair and opened them and set them to autoflush. Then I fork.

In the child I close stdin, stdout and stderr to reopen them associated to the new tty handle and exec passwd.

In the parent I want to read and write to the pty to interact with passwd. This is not working. The passwd direct access to the tty is not reaching my tty.

Maybe I need to set the controling tty in the child before doing the exec? How do I do that?

Cheers,
sut

sut
Light Poster
30 posts since Sep 2006
Reputation Points: 20
Solved Threads: 1
 

Hi. This is what I've put together so far. Can somebody tell me what I am doing wrong? I've searched the web and read the manuals but I just can't see how to get the communication with passwd to go directly through the terminal. I think I need to make the newly opened tty the controling tty but apparently don't know how.

I am working on AIX 5.2 and am not allowed to install IO::Pty or expect. So I need to roll my own.

Thank you very much for any pointers.

Attachments ttypasswd.pl_.txt (1.47KB)
sut
Light Poster
30 posts since Sep 2006
Reputation Points: 20
Solved Threads: 1
 

Hi. It works now. The attached script works on SYS V type terminals and was tested on AIX 5.3. I will eventually get it working on Sun and Linux and will need to work out the Berkly style TTYs which involves a bit of code similar to:

found: {
  for $bank ('p'..'z') {
    for $unit (('0'..'9'),('a'..'f')) {
      # +> : access in read/write mode
      open(PTY, "+>/dev/pty$bank$unit") || next;
      $s = select(PTY); $| = 1; select($s);
      open(TTY, "+>/dev/tty$bank$unit") || next;
      $s = select(TTY); $| = 1; select($s);
      last found;
      }
    }
  die "$0: Cannot find a free pty\n";
  }



Let me know if anybody cares.

Attachments ttypasswd.pl_.txt (1.67KB)
sut
Light Poster
30 posts since Sep 2006
Reputation Points: 20
Solved Threads: 1
 

I am interested if you ever get the Berkly style working, I would like to see it.

cwb
Newbie Poster
1 post since Oct 2006
Reputation Points: 10
Solved Threads: 0
 
I am interested if you ever get the Berkly style working, I would like to see it.

Hi Amit,

Im looking for the script which you have for changing password on multiple servers. Would you mind sending them to me at.

Thanks and regards, VinodKumar



Hi folks !!!!

First of all i am sorry for not replying to your posts.

Please let me know if you still require the script and i will post it in the thread.

Thanks,
Amit

kamitsin
Newbie Poster
16 posts since Apr 2006
Reputation Points: 10
Solved Threads: 0
 
Hi folks !!!! First of all i am sorry for not replying to your posts. Please let me know if you still require the script and i will post it in the thread. Thanks, Amit



If you could post the script I would very much appreciate it :)

Shelby

shelbyg75
Newbie Poster
1 post since Dec 2006
Reputation Points: 10
Solved Threads: 0
 
i am using a shell script which changes the password of all the servers in the network and also of the host server (as per your requirement) but it uses except. Earlier i had a perl script to change the password. If you want i can give you both the scripts and you can modify them as per your requirement. Amit



Hello Amit,
I was looking out for such script. I have to change user password for several servers.Would you mind sending me both the scripts at [EMAIL="neha.ao@gmail.com"]neha.ao@gmail.com[/EMAIL] ? It would be a great help.

Curi_us
Newbie Poster
1 post since May 2007
Reputation Points: 10
Solved Threads: 0
 

Hello AMIT,

I almost need the same script. What I have is a root password which needs to be same on all servers. So these would be the requirements
> Script will have the root password
> The script will change the existing password and will insert the one which I have give
> Later it will ask me to type it from the keyboard to verify it
Do u have such kind off script..It would be great if you can please share it
Sri

i am using a shell script which changes the password of all the servers in the network and also of the host server (as per your requirement) but it uses except. Earlier i had a perl script to change the password. If you want i can give you both the scripts and you can modify them as per your requirement. Amit
muffin1314
Newbie Poster
1 post since Oct 2007
Reputation Points: 10
Solved Threads: 0
 

Amit,
First, THANK YOU for posting the script.

I get the following error when attempting to run this on a SUN box.

Can't open a pseudo-terminal. No such file or directory at ttypasswd.pl line 26.

I'm hoping to change the root password across many servers via a script. This script appears to change the password for the initiating user.

On my target servers, I'll need to su - to the root account since we can't login directly as root.

I have a file that contains that the hostnames for all my target servers and I would like the script to parse this file.

Thank you in advance for any assistance you can provide.
Chris

foosballrocks
Newbie Poster
1 post since Jan 2008
Reputation Points: 10
Solved Threads: 0
 

hello Amit,

I also need change user password across multiple servers, could you send both of your scripts to [email]bjgyking@163.com[/email].
Your help will be highly apprieciated!!!

bjgyking
Newbie Poster
1 post since Apr 2008
Reputation Points: 10
Solved Threads: 0
 

Hi,

Can some send me a script to change password useing PASSWD in KSH.

ajay_3_7_80
Newbie Poster
1 post since Jan 2009
Reputation Points: 10
Solved Threads: 0
 

This article has been dead for over three months

Post: Markdown Syntax: Formatting Help
You