Nowe posty

Pokaż wiadomości

Ta sekcja pozwala Ci zobaczyć wszystkie wiadomości wysłane przez tego użytkownika. Zwróć uwagę, że możesz widzieć tylko wiadomości wysłane w działach do których masz aktualnie dostęp.


Pokaż wątki -

Strony: [1] 2
1
Języki skryptowe / [Perl] suma liczb (wyciągniętych z pliku)
« dnia: 2014-04-19, 22:08:33 »
Mam pewien problem i nie mogę sobie z nim poradzić. A dokładnie mam plik, a w nim liczby (kilka kolumn, ale tylko we 2 są liczby) i normalnie wyciąga liczby z kolumny numer 1 i otrzymuje je w takim formacie (print) :
123123129312312312312312312
gdy dam
print $zmienna . "\\n";
otrzymam już normalny wynik
123
123
123
123
321
123
ale gdy chce to dodać to cały czas wypluwa to samo (czyli wynik taki jak wyżej), a ich nie dodaje.
Tak wygląda kod na wyciąganie liczb
#!/usr/bin/env perl
use strict;
use warnings;
open my $file, '<', '/home/info.txt';
while( <$file> ) {
  chomp;
  my @fields = split;
  print $fields[-1] . "\\n";
}
A tutaj kod jak próbowałem to dodać:
#!/usr/bin/env perl
use strict;
use warnings;
use List::Util 'sum';
open my $file, '<', '/home/info.txt';
while( <$file> ) {
  chomp;
  my @fields = split;
  my @acc1 = $fields[-1];
  my $sum;
  map { $sum += $_ } @acc1;
  print $sum . "\\n";
}
wynik
123
123
321
itd.
Drugi kod:
#!/usr/bin/env perl
use strict;
use warnings;
open my $file, '<', '/home/info.txt';
while( <$file> ) {
  chomp;
  my @fields = split;
  my $acc = 0;
  my @acc1 = $fields[-1];
  foreach (@acc1) {
       $acc += $_;
 }
 print $acc . "\\n";
}
wynik taki sam jak wyżej.
Jakaś podpowiedź jak to dodać? W AWK składnia podobna i wszystko ładnie podliczyło, a perl coś nie może tego dodać. Mi się wydaje, że on to widzi jaki jeden ciąg (to co wyrzuca print bez \\n) i dlatego tego nie może dodać. Próbowałem rozbić ciąg tych liczb split, ale tutaj również to samo. Jedyne co uzyskałem to, że liczby były pojedyncze:
1
2
3
4
5
1
2
3

2
Skompilowałem sobie php jako fpm i teraz po każdej zmianie w konfiguracji nie chciałbym restartować php (aby strony działały) i tutaj przychodzi z pomocą reload. W /etc/init.d/ jest plik skeleton, zmieniłem w nim ścieżki, uruchomiłem (ok działa, ale nie tworzy .PID). Gdy przeładowałem to otrzymałem poprawny komunikat, ale tak naprawdę nic się nie zmieniło. Więc komendą
apt-get source
pobrałem php5-fpm i wyciągnąłem z niego plik .init, ale nadal to samo. Dopisałem więc do funkcji start parametr -m (aby utworzyło .PID) i ok utworzyło. Ale jak daję reload to otrzymuje komunikat, że proces o takim numerze nie istnieje. I to prawdę bo takiego nie ma (jest to numer daemona, ale on nigdzie nie istnieje). Uruchomiony jest tylko php o swoim numerze. A gdy podam numer PHP to reload go zabija (ale tylko rodzica, dziecko nadal działa, ale w starej konfiguracji). Próbowałem nawet ręcznie (start działa, ale reload to samo co wyżej zabija rodzica i koniec). Jakiś pomysł? Próbowałem z parametrem -b i bez. Cały czas to samo. Najdziwniejsze jest to, że nawet plik od twórców skeleton nie działa w pełni.

3
Bash, skrypty powłoki / [BASH] MySQL problem (skrypt)
« dnia: 2014-01-09, 16:58:29 »
Mam sobie skrypt, który w pętli while wyciąga dane z bazy mysql (rekordy) i ok wszystko działa, ale chce aby po wyświetleniu rekordu został on usunięty z bazy danych.
Kod wygląda tak:
#!/bin/bash
mysql -u root --password=password -h localhost test --skip-column-names -e 'select commain from test limit 1;' | while read -r data
do
echo `$data`
mysql -u root --password=password -h localhost test --skip-column-names -e 'DELETE FROM test WHERE commain'
done
i teraz nie wiem jak poprawnie napisać usuwanie rekordu. Próbowałem coś takiego:
mysql -u root --password=password -h localhost test --skip-column-names -e 'DELETE FROM test WHERE commain = $data'
ale cały czas error:
ERROR 1054 (42S22) at line 1: Unknown column 'ls' in 'where clause'
Nawet jak dam
ls
zamiast
$data
jakaś podpowiedź?

Edit:
Udało mi się:
"DELETE FROM test WHERE commain='$data'"

4
Języki skryptowe / [Python] Problem z if-em (error syntax)
« dnia: 2013-12-21, 21:26:59 »
Mam prosty skrypt w pythonie:
#!/usr/bin/env python
import os
import sys
#os.system("sh /root/xx.sh Wyraz1 Wyraz2")
f = os.popen("sh /root/xx.sh Wyraz1 Wyraz2")
now = f.read()
#print now,
if now == notgood:
        print "Error BASH!"
else:
        print "ok"
Skrypt SH wygląda tak:
#!/usr/bin/bash
if [ $1 = "Damian" ]; then
        echo "notgood"
        exit 0
        else
        echo "good"
fi
I teraz to ma działać na takiej zasadzie:
jeśli skrypt .sh wyrzuci error (notgood) to skrypt python powinien wypisać (error bash), ale tak się nie dzieje. Otrzymuje błąd:
Traceback (most recent call last):
  File "xx.py", line 8, in
    if now == notgood:
NameError: name 'notgood' is not defined
szukałem w google i nie mogłem znaleźć rozwiązania na swój problem. Znalazłem jedynie coś na temat funkcji
raw_input
ale z tego co widzę jest to funkcja, która "czyta" naszą odpowiedź (coś jak read w bashu). A tutaj nic takiego nie mogę użyć bo odpowiedź dostaje ze skryptu SH funkcja os. Dzięki za jakąś odpowiedź.

5
Bash, skrypty powłoki / Plik .sh uruchomiony poprzez daemon
« dnia: 2013-12-15, 20:16:38 »
Chce stworzyć skrypt i uruchomić go poprzez program daemon (aby jego zawartość cały czas było odtwarzana). I tutaj mam problem mam taki skrypt (testowy):
#!/bin/bash
echo "Hello world" > /home/xx.log
odpalam go daemonem:
daemon -u root.root -n example -O /home/xx.log -E /home/xx.err --pidfile /home/xx.pid /root/xx.sh
i ok skrypt się uruchamia, widać go w procesach, nie znika, ale problem jest taki, że skrypt wykona się 5 razy i koniec. Cały czas siedzi w procesach, ale już się nie wykonuje. Próbowałem tam dopisać sleep, ale to też nie skutkuje. I teraz pytanie da się to zrobić, aby skrypt cały czas był wykonywany?

Editos: OK, udało mi się wbiłem to w pętle while
while true ; do 
{funkcja}
sleep 5
done

6
Języki skryptowe / [Perl] if/else nie działa
« dnia: 2013-05-01, 23:06:37 »
Witam, mam pewien problem, a dokładnie w 1 miejscu (kawałek dalej jest podobny kod i działa) nie działa instrukcja if/else. Tak wygląda kod:

sub List {
        if( open( IN, "/var/www/text.xx" ) ){
                while( ){
                my($linia) = $_;
                        chomp;
                        print "x$linia";
                        if ($linia == "#!/usr") {
                        print "To jest /usr";
                        } elsif ($linia == "#!/var")  {
                        print "To jest /var";
                        } else {
                        print "Ani to ani to";
                        }

                }
                close( IN );
        }

}
Nie ważne czy powinno się wykonać if/elsif/else cały czas wyświetla:
To jest /usr
więc tylko i wyłącznie działa if, a dalej już nie chce iść :(
Jest to plugin do panelu ISPmanager. Kawałem dalej mam taki kod:
sub New {
        $elid = $Q->param( "elid" );
        $item = $Q->param( "item" );
                if ($item == "1") {
        if( open( ADD, ">/var/www/text.xx" ) ){
                print ADD "#!/usr";
                close( ADD );
                print "";
        } else {
                print "Item hasn`t been added";
        }
        } elsif ($item == "2") {
                if( open( ADD, ">/var/www/text.xx" ) ){
                print ADD "#!/var";
                close( ADD );
                print "";
        } else {
                print "Item hasn`t been added";
        }
        } else {
                print "UPS! Nic nie wiem. ";

        }

}
który działa prawidłowo natomiast ten pierwszy już nie chce. Z góry dziękuje za pomoc bo już próbowałem na kilka sposobów i zawsze to samo.

Edit:
Heh... Człowiek tak napiszę na forum i nagle coś do głowy wpadnie :)
==
zamieniłem na
eq
i działa. W perlu pierwszy raz piszę i mam przyzwyczajenia z BASH'a. Teraz już będę wiedział że
 == dla liczb
a
eq dla tekstu

7
Witam, mam pewien problem, a dokładnie piszę sobie skrypt i chce zrobić coś takiego
if [[ `komenda` ]]
then
echo "Cos nie tak"
else
echo "Czekaj sprawdze cos jeszcze"
   if [[ `komenda2` ]]
   then
   {komenda3}
   echo "Tak działa :)"
   else
   echo "Jednak nie"
   fi
fi
i zawsze pokazuje drugie else, a drugiego then nawet nie wykonuje. Gdzie może być problem?
Tak to wygląda
function start {

if [[ `ps --user $USER | grep $SCBIN` ]]
then
echo -e "\\E[31m[ERROR]\\033[0m Serwer Shoutcast jest juz uruchomiony!"
else
su $USER -c $SCHOME/$SCBIN $SCHOME/$SCCONFIG 2&>>$SCHOME/$SCLOGS &
        if [[ `ps --user $USER | grep $SCBIN` ]]
        then
         ps --user $USER | grep $SCBIN | cut -c 1-9 | tr -d [:alpha:] > $SCHOME/$SCPID
         echo -e "\\E[32m[OK]\\033[0m Serwer Shoutcast zostal uruchomiony!"
        else
         echo -e "\\E[31m[ERROR]\\033[0m Serwer nie mogl zostac uruchomiony! Sprawdz plik $SCLOGS!"
        fi
fi
}
Czyli nie wykonuje tego
then
         ps --user $USER | grep $SCBIN | cut -c 1-9 | tr -d [:alpha:] > $SCHOME/$SCPID
         echo -e "\\E[32m[OK]\\033[0m Serwer Shoutcast zostal uruchomiony!"
od razu przechodzi do else i pokazuje błąd. A tak naprawdę serwer uruchomił się poprawnie.

8
Bash, skrypty powłoki / Sprawdzanie wersji pliku (curl'em?)
« dnia: 2012-06-29, 16:43:53 »
Witam, mam pewien problem chce zrobić skrypt który ściąga dany plik dajmy na to WordPress i na dzień dzisiejszy jest to wersja 3.4.1 i link wygląda tak;
http://pl.wordpress.org/wordpress-3.4.1-pl_PL.zip
ale np. jutro może wyjść wersja 3.5.0 i muszę ręcznie to zmieniać w pliku .sh, a chciałbym otrzymać coś takiego;
{sprawdzenie wersji pliku http://pl.wordpress.org/wordpress-*.*.*-pl_PL.zip}
skrypt otrzymał wersję 3.5.0 więc
link=http://pl.wordpress.org/wordpress-3.5.0-pl_PL.zip
wget $link
I teraz nie wiem jak sprawdzić tą wersje próbowałem zmienić trochę ten kod
#!/bin/bash
curl http://www.wp.pl/ | grep -o -e 'http://www.wp.pl/.\\{1,50\\}\\jpg' > spis_plikow.txt
ale to nic nie dało. No i czy można to zrobić curlem czy może czegoś innego użyć?
Z góry dziękuje za jakąkolwiek pomoc.

9
Bash, skrypty powłoki / Bash kodowanie hasła
« dnia: 2012-04-09, 20:51:45 »
Witam, mam pytanie ponieważ pisze sobie mały skrypt i trzeba tam wpisać hasło i standardowo widać wpisywane hasło
echo "Podaj hasło"
read haslo
[...]
i teraz pytanie czy jest możliwość, aby hasło było nie widoczne tak jak to jest gdy logujemy się na serwer (np. VPS), albo po wpisaniu komendy
passwd
szukałem ale znaleźć nie mogłem. Z góry dziękuje za pomoc.

10
Witam, chciałbym napisać skrypt, który o danej godzinie zapisywał by mapę minecrafta, a potem resetował VPS. Tak więc napisałem coś takiego
#!/bin/bash
screen -r ==> włącza proces minecraft
save  ==> ta komenda zapisuje
save-all  ==> ta również
stop  ==> ta zatrzymuje serwer
sleep 3  ==>odczekuje chwile
reboot  ==>resetuje serwer
i tutaj mam problem ponieważ 2 i 3 komenda są wpisywane w konsoli VPS, a nie  na serwerze. I tutaj pytanie czy jest możliwość, aby ona była wpisana w procesie? Czy takowej możliwości nie ma?

11
Bash, skrypty powłoki / Wejście na stronę + kliknięcie
« dnia: 2011-10-21, 22:06:52 »
Witam, chciałbym stworzyć skrypt bash który by wyglądał mniej więcej tak:
odpalam skrypt
skrypt wchodzi na stronę http://xxx.pl/klikacz.php
wychodzi
wchodzi na kolejną stronę http://xxxx.pl/donate.php
Skrypt ma być przeznaczony do klikania na stronach typu pajacyk/pustamiska (do tego ustawiony cron co 24H). Tylko nie wiem jak się za to zabrać, dlatego prosiłbym o pomoc jakich funkcji bym musiał użyć (nie o gotowy kod). Jedyne co wiem to że będzie nam potrzebna przeglądarka konsolowa (links, lynx itp.). Z góry dziękuje za pomoc.

12
Bash, skrypty powłoki / Instalacja pakietów po kolei
« dnia: 2011-10-14, 19:22:15 »
Witam, chciałbym stworzyć skrypt bash który by wyglądał mniej więcej tak:
Gdy odpalamy skrypt
Czy na pewno chcesz skorzystać ze skryptu? TAK/NIE
-tak
Czy chcesz zainstalować mysql? TAK/NIE
-nie
Baza mysql nie zostanie zainstalowana
Czy chcesz zainstalować nano? TAK/NIE
-tak
{wywołuje się komenda instalująca nano}
apt-get install nano
{po zakończeniu instalacji nano}
Czy chcesz zainstalować apache2? TAK/NIE
-nie
Apache2 nie zostanie zainstalowane.
To już koniec skryptu.
Czy może chcesz go powtórzyć? TAK/NIE
-tak
{i tutaj skrypt od nowa się wykonuje czyli}
Czy chcesz zainstalować mysql? TAK/NIE
Bardzo mało znam Basha dlatego szukałem w internecie pracowałem trochę z kursami Basha, ale nie mogę dojść jak to ma być. Próbowałem trochę z funkcją
if/else
ale nie mogłem nic zdziałać. Dlatego piszę o pomoc, nie chodzi mi o podanie gotowca, lecz jakich funkcji musiałbym użyć?

13
*Suse / OpenSUSE po aktualizacji nie chce się wyłączyć.
« dnia: 2011-04-02, 23:30:22 »
Mam pewien problem, a dokładnie jak sobie zainstaluje OpenSuse to normalnie się włączy (za 1 razem po instalacji, nie raz dłużej nie raz krócej) potem normalnie tam ściągają się update i teraz przychodzi czas na restart komputera. No to restartuje tak jak system chce i tutaj zaczyna się duży problem, a dokładnie pojawia się obrazek OpenSuse i pasek ładowania jest jakieś 3mm paska (tak na oko) i stoi. Czekałem 15 minut i nic, robię restart komputera dalej nic. Nie wiem co to może być....

14
*Suse / Niektóre programy w OpenSUSE nie uruchamiają się.
« dnia: 2011-03-24, 00:26:31 »
Witam, mam dziwny problem z OpenSuse. A dokładnie taki że tj. nie może uruchomić nie których programów. A dokładnie zainstalowałem skype, chce go uruchomić to uruchamia go (koło myszki skacze "S" że go uruchamia) i po chwili nic. Nie włączyło go wcale, tak samo jest z "bluedevil" niby uruchamia te programy ale nigdzie nie są one uruchomione... Miał ktoś podobny sposób albo ktoś wie jak to naprawić ?

15
Jaką dystrybucję wybrać? / linux sama konsola
« dnia: 2011-03-20, 22:50:43 »
Witam,
chciałbym się spytać czy jest jakiś system linux który posiada samą konsolę ? Nie chodzi mi to że sobie z pulpitu włącze konsole, tylko wcale nie posiada pulpitu. Czy Debian lenny 5.0 takie coś posiada ?

Strony: [1] 2