[SOLVED] Jak zalogować się oraz przekazać do klienta irca komendy do wywołania?

Instalacja i konfiguracja oprogramowania sieciowego.
Awatar użytkownika
dawciobiel
Sędziwy Jeż
Sędziwy Jeż
Posty: 34
Rejestracja: 06 kwie 2011, 08:46
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: Inne
Architektura: x86_64
Kontakt:

[SOLVED] Jak zalogować się oraz przekazać do klienta irca komendy do wywołania?

Post autor: dawciobiel »

Czy jest możliwe aby odpalić telnet'a przy jednoczesnym przekazaniu komend które mają się wykonać po jego uruchomieniu?

Np. mam w pliku "commands" komendy IRC'a typu:

Kod: Zaznacz cały

NICK tempNick
USER tempNick 8 *  : Jan Kowalski
JOIN #channel
QUIT
i teraz chciałbym odpalić telneta poleceniem po którym połączy mi się z serwer IRC'a:

Kod: Zaznacz cały

telnet irc.freenode.org 6667 < ./commands
Niestety jeśli tak to robię to otrzymuję:

Kod: Zaznacz cały

~$ telnet irc.freenode.org 6667 < ./commands
Trying 140.211.167.98...
Connected to chat.freenode.net.
Escape character is '^]'.
Connection closed by foreign host.
Oczywiście samo połącznie z IRC'em poleceniem:

Kod: Zaznacz cały

telnet irc.freenode.org 6667
działa poprawnie.
Ostatnio zmieniony 05 sie 2011, 16:35 przez dawciobiel, łącznie zmieniany 3 razy.
Awatar użytkownika
ethanak
Wygnańcy
Posty: 3054
Rejestracja: 04 gru 2007, 13:19
Płeć: Mężczyzna
Wersja Ubuntu: 12.04
Środowisko graficzne: GNOME
Architektura: x86
Lokalizacja: Bielsko-Biała
Kontakt:

Re: Jak przekazać komendy z pliku do polecenia telnet?

Post autor: ethanak »

Kod: Zaznacz cały

man nc
Ogólnie coś w stylu:

Kod: Zaznacz cały

nc host port <plik
O to chodzi?
Awatar użytkownika
dawciobiel
Sędziwy Jeż
Sędziwy Jeż
Posty: 34
Rejestracja: 06 kwie 2011, 08:46
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: Inne
Architektura: x86_64
Kontakt:

Re: Jak przekazać komendy z pliku do polecenia telnet?

Post autor: dawciobiel »

dokładnie o to. Działać działa. Za to mam kolejny problem, mianowicie:

Zawartosc pliku "commands":

Kod: Zaznacz cały

JakisLogin@JakisHost:~$ cat ./commands
NICK tmp8
USER tmp8 8 *  : Jan Kowalski
PRIVMSG BeschBot :!keep tmp8
QUIT
JakisLogin@JakisHost:~$
Uruchamiam nc:

Kod: Zaznacz cały

JakisLogin@JakisHost:~$ nc irc.freenode.org 6667 < ./commands
:gibson.freenode.net NOTICE * :*** Looking up your hostname...
:gibson.freenode.net NOTICE * :*** Checking Ident
:gibson.freenode.net NOTICE * :*** Found your hostname
:gibson.freenode.net NOTICE * :*** No Ident response
:gibson.freenode.net 001 tmp8 :Welcome to the freenode Internet Relay Chat Network tmp8
:gibson.freenode.net 002 tmp8 :Your host is gibson.freenode.net[213.179.58.83/6667], running version ircd-seven-1.0.3
:gibson.freenode.net 003 tmp8 :This server was created Wed Feb 24 2010 at 00:05:12 CET
:gibson.freenode.net 004 tmp8 gibson.freenode.net ircd-seven-1.0.3 DOQRSZaghilopswz CFILMPQbcefgijklmnopqrstvz bkloveqjfI
:gibson.freenode.net 005 tmp8 CHANTYPES=# EXCEPTS INVEX CHANMODES=eIbq,k,flj,CFLMPQcgimnprstz CHANLIMIT=#:120 PREFIX=(ov)@+ MAXLIST=bqeI:100 MODES=4 NETWORK=freenode KNOCK STATUSMSG=@+ CALLERID=g :are supported by this server
:gibson.freenode.net 005 tmp8 SAFELIST ELIST=U CASEMAPPING=rfc1459 CHARSET=ascii NICKLEN=16 CHANNELLEN=50 TOPICLEN=390 ETRACE CPRIVMSG CNOTICE DEAF=D MONITOR=100 :are supported by this server
:gibson.freenode.net 005 tmp8 FNC TARGMAX=NAMES:1,LIST:1,KICK:1,WHOIS:1,PRIVMSG:4,NOTICE:4,ACCEPT:,MONITOR: EXTBAN=$,arx WHOX CLIENTVER=3.0 :are supported by this server
:gibson.freenode.net 251 tmp8 :There are 312 users and 66196 invisible on 27 servers
:gibson.freenode.net 252 tmp8 31 :IRC Operators online
:gibson.freenode.net 253 tmp8 6 :unknown connection(s)
:gibson.freenode.net 254 tmp8 43321 :channels formed
:gibson.freenode.net 255 tmp8 :I have 3545 clients and 2 servers
:gibson.freenode.net 265 tmp8 3545 6710 :Current local users 3545, max 6710
:gibson.freenode.net 266 tmp8 66508 74011 :Current global users 66508, max 74011
:gibson.freenode.net 250 tmp8 :Highest connection count: 6711 (6710 clients) (1638604 connections received)
:gibson.freenode.net 375 tmp8 :- gibson.freenode.net Message of the Day -
:gibson.freenode.net 372 tmp8 :- Welcome to gibson.freenode.net in Norway, EU!  Thanks to
:gibson.freenode.net 372 tmp8 :- SSC Networks (www.ssc.no) for sponsoring this server!
:gibson.freenode.net 372 tmp8 :-

(... tutaj dalsza czesc MOTD ...)

:gibson.freenode.net 376 tmp8 :End of /MOTD command.
:tmp8 MODE tmp8 :+i

JakisLogin@JakisHost:~$
Problem jest taki, że po zalogowaniu się na serwer zostają wywołane tylko komendy:
NICK tmp8
USER tmp8 8 * : Jan Kowalski

natomiast dalsze:
PRIVMSG BeschBot :!keep tmp8

już nie. Testowałem to w ten sposób, że próbowałem wysłać wiadomość sam do siebie (byłem jednocześnie zalogowany na innym kliencie IRC'a):
PRIVMSG tmp7 :testing

oraz sam do siebie:
PRIVMSG tmp8 :testing

Co to może być? A drugie pytanie jest takie, czemu jeżeli w pliku z komendami skasuję linijkę "QUIT" to połączenie z IRC'em i tak zostanie zakończone.
Awatar użytkownika
ethanak
Wygnańcy
Posty: 3054
Rejestracja: 04 gru 2007, 13:19
Płeć: Mężczyzna
Wersja Ubuntu: 12.04
Środowisko graficzne: GNOME
Architektura: x86
Lokalizacja: Bielsko-Biała
Kontakt:

Re: Jak przekazać komendy z pliku do polecenia telnet?

Post autor: ethanak »

Połączenie będzie zakończone - bo przecież nc kończąc pracę (czyli gdy wyśle już wszystko co miał na wejściu) zamyka socket i wychodzi. A co niby miałby zrobić?

Co do wywoływania tylko części poleceń - czy przypadkiem nie zachodzi przypadek że następne może być wywołane dopiero kiedy skończy się pierwsze? Jeśli tak to raczej szukałbym rozwiązania w expect.

A możesz zdradzić co w ogóle chcesz zrobić? Bo może istnieje prostsze rozwiązanie niż pchanie stringów po socketach?
Awatar użytkownika
dawciobiel
Sędziwy Jeż
Sędziwy Jeż
Posty: 34
Rejestracja: 06 kwie 2011, 08:46
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: Inne
Architektura: x86_64
Kontakt:

Re: Jak przekazać komendy z pliku do polecenia telnet?

Post autor: dawciobiel »

ethanak pisze:Połączenie będzie zakończone - bo przecież nc kończąc pracę (czyli gdy wyśle już wszystko co miał na wejściu) zamyka socket i wychodzi. A co niby miałby zrobić?

Co do wywoływania tylko części poleceń - czy przypadkiem nie zachodzi przypadek że następne może być wywołane dopiero kiedy skończy się pierwsze? Jeśli tak to raczej szukałbym rozwiązania w expect.

A możesz zdradzić co w ogóle chcesz zrobić? Bo może istnieje prostsze rozwiązanie niż pchanie stringów po socketach?
hehe, pewnie, że można, a więc:

Serwis udostępnia darmowe konta shellowe. Konto jest ważne 168h chyba, że wyśle się prośbę o przedłużenie ważności konta o kolejne 168h. Prośba to pmsg na ircu o treści "!keep nazwaKonta". Stąd właśnie usilnie chodzi mi o wysłanie pojedynczej wiadomości do bot'a na ircu.

Update:
aha, byłbym zapomniał. Po co mi w ogóle automatyczne przedłużanie ważności konta? - odpale sobie taki skrypt w CRON'ie i będę mieć święty spokój. Kiedyś zdarzyło mi się zapomnieć przedłużyć ważność i miałem potem poważny problem z ...
Ostatnio zmieniony 05 sie 2011, 15:45 przez dawciobiel, łącznie zmieniany 1 raz.
Awatar użytkownika
ethanak
Wygnańcy
Posty: 3054
Rejestracja: 04 gru 2007, 13:19
Płeć: Mężczyzna
Wersja Ubuntu: 12.04
Środowisko graficzne: GNOME
Architektura: x86
Lokalizacja: Bielsko-Biała
Kontakt:

Re: Jak przekazać komendy z pliku do polecenia telnet?

Post autor: ethanak »

Nie wiem czy coś takiego zadziała, siedzę w barze w tej chwili i niespecjalnie mi się chce sprawdzać... ale spróbuj w tym stylu:

Kod: Zaznacz cały

(cat plik1; sleep 5; cat plik2) | nc host port
gdzie pierwszy plik odpowiada za logowanie, drugi to właściwe polecenie.
Update:
zmień temat, bo pewnie 90% tych co się znają na IRC-u mają słabe pojęcie o telnecie, i vice versa.
Awatar użytkownika
dawciobiel
Sędziwy Jeż
Sędziwy Jeż
Posty: 34
Rejestracja: 06 kwie 2011, 08:46
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: Inne
Architektura: x86_64
Kontakt:

Re: Jak przekazać komendy z pliku do polecenia telnet?

Post autor: dawciobiel »

Niestety, ten sposób nie daje rady:

Kod: Zaznacz cały

login@host:~$ cat ./irc-send-bot-cmd-login; sleep 5; cat ./irc-send-bot-cmd | nc irc.freenode.org 6667
NICK tmp8
USER tmp8 8 *  : Jan Kowalski
:calvino.freenode.net NOTICE * :*** Looking up your hostname...
:calvino.freenode.net NOTICE * :*** Checking Ident
:calvino.freenode.net NOTICE * :*** Found your hostname
:calvino.freenode.net NOTICE * :*** No Ident response
:calvino.freenode.net 451 * :You have not registered
ERROR :Closing Link: 127.0.0.1 (Client Quit)
login@host:~$
Zaraz popróbuję z tym expect.
Awatar użytkownika
ethanak
Wygnańcy
Posty: 3054
Rejestracja: 04 gru 2007, 13:19
Płeć: Mężczyzna
Wersja Ubuntu: 12.04
Środowisko graficzne: GNOME
Architektura: x86
Lokalizacja: Bielsko-Biała
Kontakt:

Re: Jak zalogować się oraz przekazać do klienta irca komendy do wywołania?

Post autor: ethanak »

A nawiasy to gdzie wcięło?
Awatar użytkownika
dawciobiel
Sędziwy Jeż
Sędziwy Jeż
Posty: 34
Rejestracja: 06 kwie 2011, 08:46
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: Inne
Architektura: x86_64
Kontakt:

Re: Jak zalogować się oraz przekazać do klienta irca komendy do wywołania?

Post autor: dawciobiel »

ethanak pisze:A nawiasy to gdzie wcięło?
ups... :pt36:

Działa, dzięki :clap:
Awatar użytkownika
ethanak
Wygnańcy
Posty: 3054
Rejestracja: 04 gru 2007, 13:19
Płeć: Mężczyzna
Wersja Ubuntu: 12.04
Środowisko graficzne: GNOME
Architektura: x86
Lokalizacja: Bielsko-Biała
Kontakt:

Re: Jak zalogować się oraz przekazać do klienta irca komendy do wywołania?

Post autor: ethanak »

No to solved w temacie :) - niech inni też skorzystają!
pioruns
Przebojowy Jelonek
Przebojowy Jelonek
Posty: 1172
Rejestracja: 19 lis 2006, 21:28
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: Inne
Architektura: x86_64

Re: [SOLVED] Jak zalogować się oraz przekazać do klienta irca komendy do wywołania?

Post autor: pioruns »

@dawciobiel:
Naprawdę Ci żal zapłacić 10 funtów, żeby mieć u nich konto dożywotnio? Ja tak zrobiłem ze dwa lata temu i od tej pory mam spokój. A dla użytkowników Elite mają specjalne usługi i osobne serwery. Mówię oczywiście o serwerach niemieckich, bo na polskich jest abonament chyba:P Zastanów się nad tym;)
Zobacz:

Kod: Zaznacz cały

Donate
Why donate to our project?

    Running our servers cost time and money.
    Donations are invested in the project to help pay for servers, hardware and continuing upgrades.

Donating will also grant you special privileges

    By donating you won’t have to worry about your shell expiring.
    Have more access to system resources.

Donating £10 or more

    And you will considered an elite member.
    You will have no problems running IRC bots, bouncers…
    Your shell will be moved onto our new elite server,
    Your file space will be increased 10x… to 500MB
    You will be allowed to make SSH tunnels both ways
Poza tym, na nowej elitce (serwer), nie poustawiali jeszcze wszystkiego, i mam dostępnego 280GB miejsca dyskowego :) Mało userów jest na tym nowym serwerku, to miejsce jest.

Żeby nie było całkiem offtop:
Taką samą funkcjonalność można uzyskać, przy użyciu klienta IRC irssi oraz skryptu cron.py. Gdyby był ktoś zainteresowany, to opiszę w prosty sposób, jak to zrobić, albo jak postawić bota piszącego różne wiadomości na kanały.
Registered Linux user #454644 ---> https://linuxcounter.net/
Awatar użytkownika
dawciobiel
Sędziwy Jeż
Sędziwy Jeż
Posty: 34
Rejestracja: 06 kwie 2011, 08:46
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: Inne
Architektura: x86_64
Kontakt:

Re: [SOLVED] Jak zalogować się oraz przekazać do klienta irca komendy do wywołania?

Post autor: dawciobiel »

Co do opłacania to mi się niestety nie opłaca - z różnych powodów, a jest ich wiele. Do "normalnych" zastosowań mam własny serwer i konto shellowe na nim. Na tych darmowych kontach shellowych posiadam tylko irssi+screen na których jest ircowy bot i to do celów czysto rozrywkowych. Były wielkie plany... niestety pomysł nie wypalił z powodu podłości i zazdrości innych ludzi, a kanały irca zostały... być może w niedalekiej przyszłości wróci mi ochota aby tworzyć pro publico bono.

Jestem zainsteresowany opcją cron+irssi więc chętnie przeczytam co napiszesz.
Natomiast z bot+skrypt+irssi to wiem jak akurat tego dokonać, bo już to posiadam.
pioruns
Przebojowy Jelonek
Przebojowy Jelonek
Posty: 1172
Rejestracja: 19 lis 2006, 21:28
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: Inne
Architektura: x86_64

Re: [SOLVED] Jak zalogować się oraz przekazać do klienta irca komendy do wywołania?

Post autor: pioruns »

Pobierz ten plik http://scripts.irssi.org/scripts/cron.pl i zapisz jako ~/.irssi/scripts/autorun/cron.pl
Po uruchoemieniu irssi, po wywołaniu polecenia /script, będziesz miał na liście skrypt "cron". Czyli wszystko gra. Następnie ustawiasz w irssi autologowanie do jakiegoś kanału, dopisując:

Kod: Zaznacz cały

autojoin, botcmd: /jobsload
Zrobisz to komendą /channel add. Gdy już to zrobisz, to komenda ładująca zadania crona (/jobsload) będzie wykonywana przy każdym starcie irssi.
Teraz zostało już tylko dodać zadania do crona:

Kod: Zaznacz cały

/jobadd hour minute day_of_month month day_of_week command
i na koniec zapisać

Kod: Zaznacz cały

/jobssave
Od tej pory masz co ileś tam minut czy dni wykonywane przez Ciebie polecenie w formacie irssi. Może być to np. /msg beschbot !keep nick, albo każdej inne polecenie zewnętrzne, np. wywołanie skryptu basha (poprzez /exec command). Wsio.
Registered Linux user #454644 ---> https://linuxcounter.net/
ODPOWIEDZ

Wróć do „Sieci, serwery, Internet”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 3 gości