The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"помогите разобраться плиз, не могу понять скрипт bash "
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Информационная безопасность (Public)
Изначальное сообщение [ Отслеживать ]

"помогите разобраться плиз, не могу понять скрипт bash "  +/
Сообщение от tero (ok) on 16-Дек-09, 12:04 
Собственно сам скрипт:

#!/bin/bash

#Internal variables
sClient="/usr/local/bin/mysql"
sshClient="/usr/bin/ssh"
workFile="/usr/local/sbin/scripts/fwstate.data"
trafficLog=/var/log/traffic/`date -I`.log
rsaHostKey="/etc/ssh/ssh_host_rsa_key"

#Here we get a remainders of user bills and put them into a log
#Then we restore balance limit, unset block flag and turn on internet for choosen user
while read userIp userStatus
do
   getTraffic="$sClient UTM -B -e \"select ip, bill from users where ip='$userIp'\" --password=\"xxxxxxx\" | sed -e "/ip/d" >> $trafficLog"
   eval $getTraffic

   resetBill="$sClient UTM -B -e \"update users set bill=200 where ip='$userIp'\" --password=\"xxxxxxx\""
   eval $resetBill

   resetBlock="$sClient UTM -B -e \"update users set block='0' where ip='$userIp'\" --password=\"xxxxxxx\""
   eval $resetBlock

   resetFw="$sClient UTM -B -e \"update users set fw_on='1' where ip='$userIp'\" --password=\"cegthcbcntvf\""
   eval $resetFw

done < "$workFile"

$sshClient -i $rsaHostKey root@xxx.xxx.xxx.xxx \"/usr/local/sbin/scripts/fwresetall\"

Что делает скрипт понятно...
Непонятно что сие значит while read userIp userStatus?
Что есть userIp userStatus?
И зачем вообще нужен здесь цикл?

Высказать мнение | Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "помогите разобраться плиз, не могу понять скрипт bash "  +/
Сообщение от Hawk (??) on 16-Дек-09, 13:01 
read читает stdin и ставит то, что получила в переменные.
скрипт вызывается, и останавливается на while пока не прочитает Ip и status


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "помогите разобраться плиз, не могу понять скрипт bash "  +/
Сообщение от Andrey Mitrofanov on 16-Дек-09, 14:38 
>#!/bin/bash

Кстати! man bash же... Да, не каждый долетит до середины. Да каждый, кто долетел _каждый_ раз находит в нём что-то новое. И всего знать не может никто (это гипотеза %) ).

>while read userIp userStatus
>do
>   getTraffic="
>   eval $getTraffic

Пары команд (= и eval) в цикле "собирают" несколько командных строк и выполняют их, соответственно.

>done < "$workFile"
>Непонятно что сие значит while read userIp userStatus?

""while read ...; do ...; done <file"" значит читать построчно текстовый "file" и выполнять тело цикла для каждой строки.

Более подробно:
...done <file - открывает ("передаёт на STDIN") на чтение файл, для команды while и её _потомков_

...while read ...; do - пока команда read возвращает статус 0 ("успешное выполение") -- повторять выполнение цикла

...read userIp userStatus -- читать след.строку в переменные user* со STDIN (и кодом выхода сообщать об успешности чтения (строка прочитана или конец файла, например)

>Что есть userIp userStatus?

Имена переменных, в которые read читает "текст"

>И зачем вообще нужен здесь цикл?

Судя по названиям переменных %), выполняются какие-то команды для каждого из пользователей в списке. Какой-то сбор статистики (считалка трафика?..) по пользователям, наверное.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру