Как изменить пароль пользователя на всех узлах кластера (pbs) linux

Вы можете использовать perl:

perl -pe 's/[\d+-]+/eval$&/ge' your-file

Или даже:

perl -pe 's/[\d+-]+/$&/gee' your-file (thanks Rakesh)

То же самое с zsh:

set -o extendedglob # for the ## operator (same as ERE +)
while IFS= read -r line; do 
  printf '%s\n' ${line//(#m)[0-9+-]##/$((MATCH))}
done < your-file

Или:

zmodload zsh/mapfile
set -o extendedglob
printf %s ${mapfile[your-file]//(#m)[0-9+-]##/$((MATCH))}

Во всех в-четвертых, мы ищем последовательности цифр - и + символов и передаем их арифметическому процессору интерпретатора (eval в perl (или флаг ee, который заставляет расширение замены оцениваться как код perl), $((...)) в зш).

Мы не проверяем выражения перед передачей интерпретатору, поэтому это может привести к сбоям (например, в таких последовательностях, как -+- или 3++), но по крайней мере , поскольку мы рассматриваем только цифры и -/+ символы, это не должно причинить большего вреда, чем сообщение об ошибке и прерывание команды.

1
25.02.2016, 19:12
1 ответ

Это должно сработать:

for i in serverlist;do
   ssh $i "usermod --password $(echo my_new_password | openssl passwd -1 -stdin) USERNAME"
done

usermod не запрашивает, но пароль должен быть сначала зашифрован.

0
28.01.2020, 01:24

Теги

Похожие вопросы