it-roy-ru.com

Изменение пароля AIX через скрипт?

Я пытаюсь изменить пароль пользователя через скрипт. Я не могу использовать Sudo, так как есть функция, которая требует, чтобы пользователь снова сменил пароль, если другой пользователь изменил свой пароль.

AIX работает в системе.

к сожалению, chpasswd недоступен.

Я ожидал установлен, но у меня проблемы с этим тоже.

вот что я думал будет работать 

echo "oldpassword\nnewpasswd123\nnewpasswd123" | passwd user

Однако, после запуска скрипта мне предлагают please enter user's old password Разве они не должны отображаться? 

Я новичок в сценариях Shell, и это было сбито с толку.

36
Grushton94

Ты можешь попробовать:

echo "USERNAME:NEWPASSWORD" | chpasswd

75
Mandar Shinde

Используйте флагGNUpasswdstdin.

Со страницы man:

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

ПРИМЕЧАНИЕ: Только для root user.

Пример

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

В качестве альтернативы вы можете использовать expect, этот простой код поможет вам:

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

Результаты

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

В дополнение к другим предложениям, вы также можете достичь этого, используя HEREDOC .

В вашем непосредственном случае это может выглядеть так:

$ /usr/bin/passwd root <<EOF
test
test
EOF
7
Andrew Yasinsky

Вам нужно echo -e, чтобы символы новой строки вступили в силу

вы написали

echo "oldpassword\nnewpasswd123\nnewpasswd123" | passwd user

тебе стоит попробовать

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

скорее всего, вам не понадобится часть старого пароля\n этой команды, вам просто нужны два новых пароля. Не забудьте использовать одинарные кавычки вокруг восклицательных знаков!

echo -e "new"'!'"passwd123\nnew"'!'"passwd123" | passwd user
6
Elliot Beaumont

Ты можешь попробовать :

echo -e "newpasswd123\nnnewpasswd123" | пользователь passwd

3
TehesFR

Просто это

passwd <<EOF
oldpassword
newpassword
newpassword
EOF

Фактический вывод с машины с Ubuntu (извините, AIX мне не доступен):

[email protected]:~$ 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
[email protected]:~$
3
CoreyJJohnson

Это из: Скрипт для изменения пароля на серверах Linux через SSH

Приведенный ниже скрипт необходимо сохранить в виде файла (например, ./passwdWrapper) и сделать исполняемым (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

Затем вы можете запустить ./passwdWrapper $user $password $server $newpassword, который фактически изменит пароль.

Примечание. Для этого необходимо установить expect на компьютере, с которого вы будете запускать команду. (Sudo apt-get install expect) Сценарий работает в CentOS 5/6 и Ubuntu 14.04, но если приглашения в passwd меняются, вам, возможно, придется настроить строки expect.

2
Loren
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

Обратитесь также по ссылке ниже ...

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

Ты можешь попробовать

LINUX

эхо пароль | passwd username --stdin

UNIX

echo username: пароль | chpasswd -c

Если вы не используете аргумент "-c", вам нужно сменить пароль в следующий раз. 

1
Ahmet Mecid Kaya

Если вы можете использовать ansible и установить в нем права Sudo, то вы можете легко использовать этот скрипт. Если вы хотите написать что-то подобное, это означает, что вам нужно сделать это более чем в одной системе. Поэтому вы должны попытаться автоматизировать это.

0
itengineer

Для меня это работало в бродячей виртуальной машине:

Sudo /usr/bin/passwd root <<EOF
12345678
12345678
EOF
0
Abhradip Mukherjee