LinuxForum.Fans
Тема

Помогите написать скрипт...

Автор: borisgorbunov 21 сообщений 3834 просмотров
#376118

Есть фаил со списком пользователей. Вида:
-------------------
user1
user2
user3
-------------------
Нужно для каждого юзера :

1) Создать именную папку.
2) Скопировать шаблонный конфиг template.xml в эту папку
3) И поместит его имя в строчки вместо иксов..
<username> xxxxx<username>
<password>xxxxx<password>

Прошу помогите..

#376119

пользователей около 100..

#376121

1 и 2й пунк так можно сделать:

text
for i in `cat file`; do mkdir $i;done 
for i in `cat file`; do cp template.xml $i/;done

На 3м надо чуток подумать.

#376122

Спасибо побежал делать *DANCE*

#376123
"borisgorbunov" написал:
Спасибо побежал делать 

ты сделай, а потом спасибо скажешь.

#376131

Все получилось , спасибо.

1)

text
#!/bin/sh
for i in `cat /home/jabberusers`; do 
        mkdir $i;
done

---------------------------------------------------------------------
2)

text
#!/bin/sh
for i in `cat /home/jabberusers`; do 
    cp -r /users/.purple/account.xml  /home/$i/
done

----------------------------------------------------------------------

Осталось подставить имена в файлы .
И придумать как бы еще скопировать все это по юзерским профилям ,
И тогда вопрос с Джабером закрыт.. ;)

#376274

Алгоритм таков :
Берешь и ко пируешь весь XML файл в строку, кроме <username и <password>
. Просто найди это как подстроку и убери, а потом скопируй . Потом заведи еще 2 строки в 1 будет тег и пароль, а в другой тег и имя . И просто встать в нужное место в строке где файл

#376404
"borisgorbunov" написал:
1) Создать именную папку.
2) Скопировать шаблонный конфиг template.xml в эту папку
3) И поместит его имя в строчки вместо иксов..
<username> xxxxx<username>
<password>xxxxx<password>

text
while read USER; do
mkdir "$USER"
cp template.xml > "$USER/"
sed  -i "s/xxxxx/$USER" "$USER/template.xml"
done <filename
#376430

Хм..
Что то у меня не все получается.. *DONT_KNOW*

На данный момент есть папка USERS
В ней есть именные папки юзеров в которых лежит профиль джаббера .purple
В сотором есть файлик accounts.xml
в нем между тегов дефолтный пароль и логин
<username> xxxxx<username>
<password>xxxxx<password>
я хотелбы чтоб вместо паролья и логина был имя пользователя
/home/vasya/.purple
<username> vasya<username>
<password>vasya<password>

еще есть файл со списком пользвателей в столбик по алфавиту
при помощи него я папки создал

#376432
Kenny написал:
Алгоритм таков :
Берешь и ко пируешь весь XML файл в строку, кроме <username и <password>
. Просто найди это как подстроку и убери, а потом скопируй . Потом заведи еще 2 строки в 1 будет тег и пароль, а в другой тег и имя . И просто встать в нужное место в строке где файл

Не понятно как это сделать в цикле для 100 пользователей...

#376433

borisgorbunov, вы мой скрипт запускали? Что пишет?

#376434
"borisgorbunov" написал:
Не понятно как это сделать в цикле для 100 пользователей...

да хоть для Over9000

sed -i "s/xxxxx/$USER" "имя файла, в котором менять"

в переменной $USER должно быть записано нужное имя.

#376438

Щас еще раз попробую ,простите.. :[

#376440

чуть ошибся

запускать в каталоге с файлом template.xml

text
while read USER; do
  mkdir "$USER"
  cp template.xml "$USER/"
  sed  -i "s/xxxxx/$USER" "$USER/template.xml"
done <filename

#376441

в переменной $USER должно быть записано нужное имя???
(для каждого юзера должно быть свое имя и пароль в виде одноименной папки пользователя.)
как я должен обьявлять переменную в скрипте ???
как файл users.txt ??

#376443

Мне кажется что смысл немного потеряню
вот что у меня щас есть :
1) папка USERS
2) В USERS есть именные папки юзеров в которых лежит профиль джаббера .purple
3) В каждом .purple есть файлик accounts.xml
4) в нем между тегов дефолтный пароль и логин
<username> xxxxx<username>
<password>xxxxx<password>
я хотелбы чтоб вместо паролья и логина был имя пользователя

<username> vasya<username>
<password>vasya<password>

еще есть файл со списком пользвателей в столбик по алфавиту
при помощи него я папки создал

#376449

это всё одной командой можно сделать

вот структура:
[console]drb@ksu:/tmp/users$ find
.
./accounts.xml
./ccc
./ccc/.purple
./ccc/.purple/accounts.xml
./bb
./bb/.purple
./bb/.purple/accounts.xml
./a
./a/.purple
./a/.purple/accounts.xml
[/console]

вот команда:
[console]drb@ksu:/tmp/users$ find -mindepth 1 -maxdepth 1 -type d -exec sed -i*~ 's~xxxxx~{}~;T;s~\./~~' {}/.purple/accounts.xml \;
[/console]

#376457
drBatty написал:
это всё одной командой можно сделать

вот структура:
[console]drb@ksu:/tmp/users$ find
.
./accounts.xml
./ccc
./ccc/.purple
./ccc/.purple/accounts.xml
./bb
./bb/.purple
./bb/.purple/accounts.xml
./a
./a/.purple
./a/.purple/accounts.xml
[/console]

вот команда:
[console]drb@ksu:/tmp/users$ find -mindepth 1 -maxdepth 1 -type d -exec sed -i*~ 's~xxxxx~{}~;T;s~\./~~' {}/.purple/accounts.xml \;
[/console]

Спасибо тебе огромное !!
*YAHOO*
все получилось

#376460

Тему модератор зкрывает?? :[

#376461
"borisgorbunov" написал:
Тему модератор зкрывает?? ah

Да.

Но обычно здесь решённые темы не закрываются.

Войдите или зарегистрируйтесь, чтобы ответить.