Скрипт для замены строк в файле

Автор: werewolf Дата: 28.04.2005 13:45 Доброго всем времени суток.
Подскажите, плз, умные люди, каким образом можно реализовать сабж.
Необходимо для автоматического добавления аккаунтов машин в домене на Samba 3. Поскольку useradd в ASP10 не умеет добавлять юзеров с именем вида: user$, приходится править /etc/passwd и /etc/shadow ручками, что не хочется ;-)

Придумалось 2 варианта решения задачи:
1. useradd'ом добавлять юзера без $ и выполнять скрипт, который бы обновлял указанные файлы
2. "В тупую" приписывать к файлам строчки уже с $, но возникает проблема с определением uid нового юзера
Полагаю, что вариант 1 более правильный, думаю, что реализоваться это должно при помощи `sed -e`, но как? Уже три часа бьюсь Грустный

Если кто-то знает, как должен выглядить сабжевый скрипт, прошу, помогите.
Также, возможно, кто-нибудь проще решил указанную в начале поста проблему, если так, не откажите, поделитесь.

P.S. Сорри, если вопрос кому-то показался глупым... Пойду дальше разбираться...

P.P.S. Да, собственно, как должны меняться строки:
/etc/passwd
---
.
.
comp:x:503:501::/dev/null:/bin/false
---
на
---
.
.
comp$:x:503:501::/dev/null:/bin/false
---

и /etc/passwd
---
.
.
comp:!!::::::::
---
на
---
.
.
comp$:!!:::::::
---
Re: Скрипт для замены строк в файле 28.04.2005 15:17SlavaZ попробуй просто
---
smbpasswd -m -a comp
---
Если мне не изменяет память, то самбе в 10-м ASPLinux'е не нужно машинные аккаунты добавлять в систему...
Re: Скрипт для замены строк в файле 28.04.2005 15:51werewolf увы, нужно Грустный
---
#smbpasswd -a -m comp
Failed to initialise SAM-ACCOUNT for user comp$. Does this user exist in the UNIX password database ?
Failed to modify password entry for user comp$
#wbinfo -V
Version 3.0.8-1asp
---

спасибо за ответ Улыбка
Re: Скрипт для замены строк в файле 28.04.2005 16:39shutdown-h-now Если делается все только ради useradd, то useradd можно взять бинарником из ASP9 (или 9.2) и скопировать его в десятку прямо поверх существующего.
Все начинает работать нормально. Проверено.
Re: Скрипт для замены строк в файле 28.04.2005 17:27werewolf 2shutdown-h-now:

Вы правы, все делается ради этого, но предложенный вами вариант не годится по определенным причинам. Спасибо за ответ.
Решение найдено: скрипт будет на Perl'e Улыбка
Re: Скрипт для замены строк в файле 28.04.2005 17:49SlavaZ Ну раз пошла такая пьянка... Улыбка
smb_useradd.sh:
---
#!/bin/sh
SMB_USER=$1

EditPswd(){
sed 's/^'$1':/'$1'$:/' $2 >$2.tmp
mv -f $2{.tmp,}
}

useradd "$SMB_USER"
EditPswd "$SMB_USER" "/etc/passwd"
EditPswd "$SMB_USER" "/etc/shadow"
---
первым параметром хочет имя юзера без $
Re: Скрипт для замены строк в файле 28.04.2005 18:43werewolf 2 SlavaZ: спасибо Улыбка
только, как выяснилось после попытки с Perl-скриптом, не хочет samba так:
---
add machine script = /usr/sbin/useradd -M -g machines -s /bin/false '%m' && smb_useradd.sh '%m'
---
Грустный((

Похоже, и вправду, придется воспользоваться советом shutdown-h-now...
Кстати, сразу такой вопрос: где искать useradd в дистрибе ASP 9.<0/2>?
Re: Скрипт для замены строк в файле 29.04.2005 10:07SlavaZ > только, как выяснилось после попытки с Perl-скриптом, не хочет samba
в таком варианте из моего скрипта надо выкинуть строчку
---
useradd "$SMB_USER"
---
Ибо useradd уже выполняется до вызова скрипта.
> Кстати, сразу такой вопрос: где искать useradd в дистрибе ASP 9.<0/2>?
---
$ which useradd
/usr/sbin/useradd
$ rpm -qf /usr/sbin/useradd
shadow-utils-4.0.3-56asp
---

Это для 10-ки. В 9.[2|0] у shadow-utils будет версия помоложе.
RSS-материал