Решено: Цикл, переменные из строки файла (переносим пользователей файрберда)

На самом деле это единственный раздел про unix на этом форуме

Модераторы: /dev/random, Модераторы разделов

Ответить
JTMarsh
Сообщения: 143
ОС: Debian

Решено: Цикл, переменные из строки файла

Сообщение JTMarsh »

Добрый день!

Ситуация такова - переезжаем сервером файрберда и возникла необходимость перенести пользователей файрберда.
Исходные данные: текстовик с содержимым вида

Код: Выделить всё

имя_пользовтеля;пароль


и надо это дело запихать в конструкцию, которая построчно перечитает файл и выполнит

Код: Выделить всё

gsec -user SYSDBA -password masterkey -add имя_польлзователя -pw пароль

знаю есть такое

Код: Выделить всё

cat файл | while read line;
do
    делаем шо надо с $line;
done


А вот как разделить строку на 2 переменные знания не хвататет.
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current
Контактная информация:

Re: Решено: Цикл, переменные из строки файла

Сообщение drBatty »

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: ну вот... Ошибся в скрипте. Исправил.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
nerve
Сообщения: 280
ОС: OpenBSD

Re: Решено: Цикл, переменные из строки файла

Сообщение nerve »

Код: Выделить всё

cat файл | while read word1 word2;
do
    делаем шо надо с $word1;
    делаем шо надо с $word2;
done
Спасибо сказали:
allez
Сообщения: 2223
Статус: Не очень злой админ :-)
ОС: SuSE, CentOS, FreeBSD, Windows

Re: Решено: Цикл, переменные из строки файла

Сообщение allez »

Вот вам до кучи еще три способа на выбор:

Код: Выделить всё

$ 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
Контактная информация:

Re: Решено: Цикл, переменные из строки файла

Сообщение drBatty »

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 плохие. Тогда уж лучше

Код: Выделить всё

sed -i*.bak 's/;/ /' файл с паролями
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20791
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Решено: Цикл, переменные из строки файла

Сообщение Bizdelnick »

Код: Выделить всё

#!/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
Контактная информация:

Re: Решено: Цикл, переменные из строки файла

Сообщение drBatty »

Bizdelnick
моё конфу всё равно круче

Код: Выделить всё

#!/bin/sed -rf
s/(.*);(.*)/gsec -user SYSDBA -password masterkey -add "\1" -pw "\2"/e
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
JTMarsh
Сообщения: 143
ОС: Debian

Re: Решено: Цикл, переменные из строки файла

Сообщение JTMarsh »

Ох ты ж ежик сколько вариантов.

Надыбал сам в инете конструкцию, которую преобразовал в

Код: Выделить всё

#!/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
Контактная информация:

Re: Решено: Цикл, переменные из строки файла

Сообщение drBatty »

JTMarsh писал(а):
31.01.2014 17:41
IFS=";"

можно из цикла вынести. Баш и так самый тормозной ЯП, который я знаю. А так -- тоже годный вариант.

JTMarsh писал(а):
31.01.2014 17:41
Все отработало, правда отругалось.

пишите как именно. А то потом будете плакать.

drBatty писал(а):
31.01.2014 18:01
тоже годный вариант.

не. не годный. read в первый проход всё прочитает, а во второй и сл. может и сама порезать, без set.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
nerve
Сообщения: 280
ОС: OpenBSD

Re: Решено: Цикл, переменные из строки файла

Сообщение nerve »

для чего используется это:

Код: Выделить всё

  set -- $line
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current
Контактная информация:

Re: Решено: Цикл, переменные из строки файла

Сообщение drBatty »

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.

http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Ответить