via script password para one change cambiar bash shell ssh passwords aix

bash - one - script para cambiar password linux



¿Cambiar una contraseña de AIX a través de un script? (13)

Además de las otras sugerencias, también puede lograr esto usando un HEREDOC .

En su caso inmediato, esto podría verse así:

$ /usr/bin/passwd root <<EOF test test EOF

Intento cambiar la contraseña de un usuario a través de un script. No puedo usar sudo ya que hay una función que requiere que el usuario cambie la contraseña nuevamente si otro usuario cambia su contraseña.

AIX se está ejecutando en el sistema.

desafortunadamente, chpasswd no está disponible.

He esperado instalar, pero también estoy teniendo problemas con eso.

aquí es lo que pensé que funcionaría

echo "oldpassword/nnewpasswd123/nnewpasswd123" | passwd user

Sin embargo, una vez que ejecute el script me piden que please enter user''s old password ¿no deberían aparecer todos?

Soy un principiante con scripts de shell y esto ha sido desconcertado.


Esto es de: Script para cambiar la contraseña en los servidores de Linux a través de ssh

La siguiente secuencia de comandos deberá guardarse como un archivo (por ejemplo, ./passwdWrapper ) y ser ejecutable ( chmod u+x ./passwdWrapper)

#!/usr/bin/expect -f #wrapper to make passwd(1) be non-interactive #username is passed as 1st arg, passwd as 2nd set username [lindex $argv 0] set password [lindex $argv 1] set serverid [lindex $argv 2] set newpassword [lindex $argv 3] spawn ssh $serverid passwd expect "assword:" send "$password/r" expect "UNIX password:" send "$password/r" expect "password:" send "$newpassword/r" expect "password:" send "$newpassword/r" expect eof

Luego puede ejecutar ./passwdWrapper $user $password $server $newpassword que realmente cambiará la contraseña.

Nota: Esto requiere que instale expect en la máquina desde la cual ejecutará el comando. ( sudo apt-get install expect ) La secuencia de comandos funciona en CentOS 5/6 y Ubuntu 14.04, pero si cambian las indicaciones en passwd , puede que tenga que ajustar las líneas expect .


Necesita eco -e para que los caracteres de línea nueva tengan efecto

tu escribiste

echo "oldpassword/nnewpasswd123/nnewpasswd123" | passwd user

Deberías intentarlo

echo -e "oldpassword/nnewpasswd123/nnewpasswd123" | passwd user

lo más probable es que no necesite la porción oldpassword / n de ese comando, solo debe necesitar las dos nuevas contraseñas. ¡No olvides utilizar comillas simples alrededor de los signos de exclamación!

echo -e "new"''!''"passwd123/nnew"''!''"passwd123" | passwd user


Para mí esto funcionó en una máquina virtual vagabunda:

sudo /usr/bin/passwd root <<EOF 12345678 12345678 EOF


Puedes probar :

echo -e "newpasswd123 / nnnewpasswd123" | usuario passwd


Puedes probar

LINUX

echo contraseña | nombre de usuario de contraseña --stdin

UNIX

eco nombre de usuario: contraseña | chpasswd -c

Si no utiliza el argumento "-c", debe cambiar la contraseña la próxima vez.


Puedes probar:

echo "USERNAME:NEWPASSWORD" | chpasswd


Sólo esta

passwd <<EOF oldpassword newpassword newpassword EOF

Salida real de la máquina ubuntu (lo siento, no hay AIX disponible para mí):

user@host:~$ passwd <<EOF oldpassword newpassword newpassword EOF Changing password for user. (current) UNIX password: Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully user@host:~$


Si puede usar ansible y establecer los derechos de sudo en él, entonces puede usar este script fácilmente. Si quieres escribir algo como esto, significa que debes hacerlo en más de un sistema. Por lo tanto, debe intentar automatizar eso también.


Use la bandera de GNU passwd stdin .

Desde la página man :

--stdin This option is used to indicate that passwd should read the new password from standard input, which can be a pipe.

NOTA: solo para usuario root .

Ejemplo

$ adduser foo $ echo "NewPass" |passwd foo --stdin Changing password for user foo. passwd: all authentication tokens updated successfully.

Alternativamente, puede usar expect , este simple código hará el truco:

#!/usr/bin/expect spawn passwd foo expect "password:" send "Xcv15kl/r" expect "Retype new password:" send "Xcv15kl/r" interact

Resultados

$ ./passwd.xp spawn passwd foo Changing password for user foo. New password: Retype new password: passwd: all authentication tokens updated successfully.


#!/usr/bin/python import random import string import smtplib import sys import os from subprocess import call import socket user = sys.argv[1] receivers = ["%[email protected]" %user] ''''''This will generate a 30 character random password'''''' def genrandpwd(): return ''''.join(random.SystemRandom().choice(string.ascii_lowercase + string.digits + string.ascii_uppercase + string.punctuation) for _ in range(30)) def change_passwd(user, password): p = os.popen("/usr/bin/passwd %s" %user, "w") p.write(password) p.write("/n") p.write(password) p.close() def chage(user): agepasswd = call(["/usr/bin/chage", "-d", "0", "%s" %user]) def mailpwd(user, password): sender = "admin@%s" %socket.gethostname() subj = "!!!IMPORTANT!!!, Unix password changed for user %s" %user text = "The password for the %s user has changed, the new password is:/n/n %s /n/n Note: The system will force to change the password upon initial login. Please use the password provided in the mail as your current password and type the password of your choice as the New password" %(user, password) message = message = ''Subject: %s/n/n%s'' % (subj, text) smtpObj = smtplib.SMTP(''mailrelay-server.domain.com'') smtpObj.sendmail(sender, receivers, message) smtpObj.quit() def main(): newpwd = genrandpwd() change_passwd(user, newpwd) chage(user) mailpwd(user, newpwd) if __name__ == "__main__": main()


Here is the script... #!/bin/bash echo "Please enter username:" read username echo "Please enter the new password:" read -s password1 echo "Please repeat the new password:" read -s password2 # Check both passwords match if [ $password1 != $password2 ]; then echo "Passwords do not match" exit fi # Does User exist? id $username &> /dev/null if [ $? -eq 0 ]; then echo "$username exists... changing password." else echo "$username does not exist - Password could not be updated for $username"; exit fi # Change password echo -e "$password1/n$password1" | passwd $username

Consulte el siguiente enlace también ...

http://www.putorius.net/2013/04/bash-script-to-change-users-password.html


printf "oldpassword/nnewpassword/nnewpassword" | passwd user