# [SOLVED]Czy jest realne aby skrypt bash'a reagowal na wyniki

## lo53r

Witam.

Potrzebuje sie dowiedziec czy jest mozliwe aby skrypt bash'a analizowal w czasie rzeczywistym wyniki jakie sa 'wypluwane' przez inny program bezposrednio na konsole ?Last edited by lo53r on Wed Mar 03, 2010 9:55 pm; edited 1 time in total

----------

## Raku

 *lo53r wrote:*   

> Witam.
> 
> Potrzebuje sie dowiedziec czy jest mozliwe aby skrypt bash'a analizowal w czasie rzeczywistym wyniki jakie sa 'wypluwane' przez inny program bezposrednio na konsole ?

 

Nie. Ale jeśli wyniki te przekierujesz ze stdout na wejście do skryptu, to będzie to możliwe.

----------

## lo53r

Dobra, dobra, tylko jak ?

mam prosty skrypt bash'owy

```

#!/bin/bash

echo ${1} >> test.txt

```

Tak. Wiem, ze jest to do osiagniecia poprzez skierowania strumienia stdout na plik, jednak poki co eksperymentuje

W konsoli kombinowalem poprzez

```

ngrep < ./skrypt

ngrep | ./skrypt

```

niestety nic z moich planow nie zdalo pomyslu.

A moze jest jakas inna rada aby analizowac wyniki uruchomionego procesu w czasie rzeczywistym. Wg. jakiegos artykulu python potrafi sobie radzic z tym calkiem niezle. Tylko czy pozniej bedzie mozliwe telnetowanie z poziomu tak przygotowanego skryptu ?

----------

## lsdudi

Gdybyś  wypluwał zmienną na out a nie przekierowywał do pliku to by zadziałało....

----------

## lo53r

Może jak opiszę dokładnie co chcę osiągnąć to ktoś krzyknie "hej! lepiej to zrobić w ten i ten sposób', a więc potrzebuję żeby cokolwiek reagowało na wyniki jakie są wypluwane przez program ngrep. Do tego celu z początku chciałem wykorzystać bash'a, jednak zważając na to, że w odpowiednim momencie będę potrzebować sterować sesją telnetu uważam, że python zda się lepiej. Co o tym sądzicie ?

----------

## nieprosty

W skrócie wygląda to tak:

```
ngrep | ./skrypt.sh
```

gdzie skrypt.sh wygląda nastepująco:

```
#/bin/bash

while read zmienna

do

echo ${zmienna}

done

```

W miejscu gdzie masz echo ${zmienna} możesz sobie dowolnie prasować otrzymane dane i coś z nimi zrobić.

Pozdrawiam

----------

## lo53r

Dzięki wszystkim  :Smile: 

@nieprosty - wydaje mi się, że wykrzyknika w skrypcie nie dostawiłeś - mimo to dziękuję za tą podpowiedź  :Smile: 

----------

## Garrappachc

O, to tak pryz okazji - da się zrobić, żeby np coś się wykonało, jak np emerge skończy coś kompilować? Chodzi o to, że w zależności od tego, czy kompilacja się wysypie, czy nie, robił --resume --skipfirst albo puszczał jakiś dźwięk (żebym wiedział, że skończył). Ad 1. - wiem, że jest --keep-going, ale to nie to samo...

----------

## lo53r

To może jak w moim przypadku - zrobić zewnętrzny skrypt, który bada wyniki jakie by emerge wysypywał i jeżeli znalazłby informację, że zakończono z powodzeniem, to następowałoby zdarzenieX, a jeżeli fail to wykonywane jest zdarzenieY

A przy okazji, jest ktoś w stanie taki skrypt napisać w pythonie ?

```

#!/bin/bash

while read zmienna

do

echo ${zmienna}

done 
```

----------

## SlashBeast

 *Garrappachc wrote:*   

> O, to tak pryz okazji - da się zrobić, żeby np coś się wykonało, jak np emerge skończy coś kompilować? Chodzi o to, że w zależności od tego, czy kompilacja się wysypie, czy nie, robił --resume --skipfirst albo puszczał jakiś dźwięk (żebym wiedział, że skończył). Ad 1. - wiem, że jest --keep-going, ale to nie to samo...

 

Napisz sobie wrapper do tego.

----------

## nieprosty

 *lo53r wrote:*   

> Dzięki wszystkim 
> 
> @nieprosty - wydaje mi się, że wykrzyknika w skrypcie nie dostawiłeś - mimo to dziękuję za tą podpowiedź 

 

Zgadza się.

Skrypt był na tyle krótki że zamiast przekleić to go przepisałem stąd ten błąd.

Pozdrawiam

----------

