На самом деле это единственный раздел про unix на этом форуме
Модераторы: /dev/random , Модераторы разделов
JTMarsh
Сообщения: 143
ОС: Debian
Сообщение
JTMarsh » 31.01.2014 16:43
Добрый день!
Ситуация такова - переезжаем сервером файрберда и возникла необходимость перенести пользователей файрберда.
Исходные данные: текстовик с содержимым вида
и надо это дело запихать в конструкцию, которая построчно перечитает файл и выполнит
Код: Выделить всё
gsec -user SYSDBA -password masterkey -add имя_польлзователя -pw пароль
знаю есть такое
Код: Выделить всё
cat файл | while read line;
do
делаем шо надо с $line;
done
А вот как разделить строку на 2 переменные знания не хвататет.
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current
Сообщение
drBatty » 31.01.2014 16:53
JTMarsh писал(а): ↑ 31.01.2014 16:43
А вот как разделить строку на 2 переменные знания не хвататет.
а не нужно.
cat тоже не нужна(и даже вредна)
Shell
IFS2="$IFS"; IFS=";"; while read username password; do echo "$username $password"; done <файл_с_паролями; IFS="$IFS2"
PS: постарайтесь разобраться в этой команде, прежде чем её запускать!
НИКАКИХ ГАРАНТИЙ!
PS: ну вот... Ошибся в скрипте. Исправил.
nerve
Сообщения: 280
ОС: OpenBSD
Сообщение
nerve » 31.01.2014 16:53
Код: Выделить всё
cat файл | while read word1 word2;
do
делаем шо надо с $word1;
делаем шо надо с $word2;
done
allez
Сообщения: 2223
Статус: Не очень злой админ :-)
ОС: SuSE, CentOS, FreeBSD, Windows
Сообщение
allez » 31.01.2014 16:56
Вот вам до кучи еще три способа на выбор:
Код: Выделить всё
$ echo "имя_пользовтеля;пароль" | awk -F ';' '{print $1}'
имя_пользовтеля
Код: Выделить всё
$ echo "имя_пользовтеля;пароль" | cut -d ';' -f 2
пароль
Код: Выделить всё
$ a="имя_пользовтеля;пароль"; echo ${a/*;/}
пароль
$ a="имя_пользовтеля;пароль"; echo ${a/;*/}
имя_пользовтеля
P. S. Способ, который предложил
drBatty - лучше.
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current
Сообщение
drBatty » 31.01.2014 16:59
JTMarsh писал(а): ↑ 31.01.2014 16:43
gsec -user SYSDBA -password masterkey -add имя_польлзователя -pw пароль
не забудьте это заключить в кавычки. Вот так:
Код: Выделить всё
gsec -user "SYSDBA" -password "$masterkey" -add "$имя_польлзователя" -pw "$пароль"
allez писал(а): ↑ 31.01.2014 16:56
Вот вам три способа на выбор
все 3 плохие. Тогда уж лучше
Bizdelnick
Модератор
Сообщения: 21504
Статус: nulla salus bello
ОС: Debian GNU/Linux
Сообщение
Bizdelnick » 31.01.2014 17:14
Код: Выделить всё
#!/usr/bin/perl
open($file, '<', 'файл');
while (<$file>) {
chomp;
($user, $pass) = split /;/;
`gsec -user SYSDBA -password masterkey -add "$user" -pw "$pass"`;
}
Пишите правильно:
в консоли
вк у́пе (с чем-либо)
в о бщем
воо бще в течение (часа)
новичо к
ню анс
по у молчанию приемле мо
проблем а
пробо вать
траф ик
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current
Сообщение
drBatty » 31.01.2014 17:23
Bizdelnick
моё конфу всё равно круче
Код: Выделить всё
#!/bin/sed -rf
s/(.*);(.*)/gsec -user SYSDBA -password masterkey -add "\1" -pw "\2"/e
JTMarsh
Сообщения: 143
ОС: Debian
Сообщение
JTMarsh » 31.01.2014 17:41
Ох ты ж ежик сколько вариантов.
Надыбал сам в инете конструкцию, которую преобразовал в
Код: Выделить всё
#!/bin/bash
while read line ; do
IFS=";"
set -- $line
username=$1
password=$2
gsec -user SYSDBA -password masterkey -add $username -pw $password
done < /home/urik/fbusers.csv
Все отработало, правда отругалось.
Всем спасибо, ща софтину бум тестить.
Спасибо еще раз, отметьте решеной, пожалуйста.
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current
Сообщение
drBatty » 31.01.2014 18:01
JTMarsh писал(а): ↑ 31.01.2014 17:41
IFS=";"
можно из цикла вынести. Баш и так самый тормозной ЯП, который я знаю. А так -- тоже годный вариант.
JTMarsh писал(а): ↑ 31.01.2014 17:41
Все отработало, правда отругалось.
пишите как именно. А то потом будете плакать.
drBatty писал(а): ↑ 31.01.2014 18:01
тоже годный вариант.
не. не годный. read в первый проход всё прочитает, а во второй и сл. может и сама порезать, без set.
nerve
Сообщения: 280
ОС: OpenBSD
Сообщение
nerve » 31.01.2014 19:58
для чего используется это:
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current
Сообщение
drBatty » 01.02.2014 14:09
nerve
резка строки
$help set
set: set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]
Set or unset values of shell options and positional parameters.
Change the value of shell attributes and positional parameters, or
display the names and values of shell variables.