The OpenNET Project / Index page

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




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
помогите разобраться плиз, не могу понять скрипт bash , !*! tero, 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?
И зачем вообще нужен здесь цикл?

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


  • помогите разобраться плиз, не могу понять скрипт bash , !*! Andrey Mitrofanov, 14:38 , 16-Дек-09 (2)
    >#!/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 читает "текст"

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

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




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

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