Трябва ми едея за клиент/сервер програмче под Perl
19 отговора
591 прегледа
Трябва ми едея за клиент/сервер програмче под Perl
Хора помогнете ...
Може ли някой да ми даде код на Perl който да прави следното.
1. Да се състой от две части
- Едната Server-na която да чака за определена задача и да ги изпълнява
например при даден сигнал да пуска команда
- Втората клиентска част с която да се задава какво ще пуска Server-nata част
Server-nata част да стой като демон и пустоянно да слушти.
Идеята е на дадено PC да се пусне Server-nata час
А от друго PC да се дават задачите.
Това не е троян. Искам да си направя програма за НЕТ Зала която да е базирана на Linux. Perl+MySQL+Apache
От Ineternet Expolorer ще се задава кой компютър да ползва НЕТА.
Като се даде правo на дадено PC то сърверната част трабва да го пусне.
Това ще стане като се пускат команди с ipchains или iptables
Кажете как се прави това. Ако може пуснете и source код.
10 %
Може ли някой да ми даде код на Perl който да прави следното.
1. Да се състой от две части
- Едната Server-na която да чака за определена задача и да ги изпълнява
например при даден сигнал да пуска команда
- Втората клиентска част с която да се задава какво ще пуска Server-nata част
Server-nata част да стой като демон и пустоянно да слушти.
Идеята е на дадено PC да се пусне Server-nata час
А от друго PC да се дават задачите.
Това не е троян. Искам да си направя програма за НЕТ Зала която да е базирана на Linux. Perl+MySQL+Apache
От Ineternet Expolorer ще се задава кой компютър да ползва НЕТА.
Като се даде правo на дадено PC то сърверната част трабва да го пусне.
Това ще стане като се пускат команди с ipchains или iptables
Кажете как се прави това. Ако може пуснете и source код.
10 %
Re: Трябва ми едея за клиент/сервер програмче под
Ti pa prekaleno slozno neshto go davash za perl...
Mozhesh primerno da go napravish po slednq nachin..
Serverskata programka se izpulnqva ot crontaba na 1min da rechem i proverqva sudarzhanieto na file-a /home/user/tmp/command
v sluchai che ima takuv file.. otvarq go i vutre namira -> comanda:id
izpulnqva comandata i setva ID-to na 0 ili ako nqma ID iztriva file-a .. vse edno
clientskata programa... purvo trqbva da mozhe ad prati file-a na server-a.. tova mozhe da stane kato se napravi DSA key za SSH-a, koito se zaposva v server-a, taka che authotication-a da ne stava po password a po DSA key...
sled tova prosto podavash komandite s scp command(tva e file-a) user@ip:~/tmp
i tova e obshto vzeto.. koda ne e problem da se napravi, no se iziskva vreme.. i chesno.. nqma da trugna da go pisha bez da mi trqbva... ako poznavash perl nqma da ti e problem da si go napravish... ostanaloto e do pitane na vuprosi...
Mozhesh primerno da go napravish po slednq nachin..
Serverskata programka se izpulnqva ot crontaba na 1min da rechem i proverqva sudarzhanieto na file-a /home/user/tmp/command
v sluchai che ima takuv file.. otvarq go i vutre namira -> comanda:id
izpulnqva comandata i setva ID-to na 0 ili ako nqma ID iztriva file-a .. vse edno
clientskata programa... purvo trqbva da mozhe ad prati file-a na server-a.. tova mozhe da stane kato se napravi DSA key za SSH-a, koito se zaposva v server-a, taka che authotication-a da ne stava po password a po DSA key...
sled tova prosto podavash komandite s scp command(tva e file-a) user@ip:~/tmp
i tova e obshto vzeto.. koda ne e problem da se napravi, no se iziskva vreme.. i chesno.. nqma da trugna da go pisha bez da mi trqbva... ako poznavash perl nqma da ti e problem da si go napravish... ostanaloto e do pitane na vuprosi...
Re: Трябва ми идея за клиент/сервер програмче под
Не може ли да се ползва следното:
$server=IO::Socket::INET->new(LocalPort=> PORT, Proto => "udp")
$server=IO::Socket::INET->new(LocalPort=> PORT, Proto => "udp")
Re: Трябва ми идея за клиент/сервер програмче под
e.. avno ne sum tolkova advanced...
no mozhesh da prochetesh podrobnosti na
[линк]
no mozhesh da prochetesh podrobnosti na
[линк]
Re: Трябва ми идея за клиент/сервер програмче под
Проблема не ми е как се присвояват стойности или как се събира, умножава и т.н.
А как мога да предавам данни с Perl от едно PC на друго.
Затова може ли малко помощ за този модул.
IO::Socket::INET
Мисля че това че е разковничето за цялата работа.
Най добре ако имам една примерна програмка използваща този модул
А как мога да предавам данни с Perl от едно PC на друго.
Затова може ли малко помощ за този модул.
IO::Socket::INET
Мисля че това че е разковничето за цялата работа.
Най добре ако имам една примерна програмка използваща този модул
Re: Трябва ми идея за клиент/сервер програмче под
Ami vizh kakvo pravi toq modul.. shtom si se zanimaval s perl i imash na rapolozhenie tutorial mislq che nqma da ti e trudno da pregledash /usr/lib/perl5/5.6.0/IO/Socket/INET.pl i da precenish kak da go izpolzvash...
PS: putq pri men e takuv.. pri teb mozhe da e razlichen v zavisimost ot versiqta....
PS: putq pri men e takuv.. pri teb mozhe da e razlichen v zavisimost ot versiqta....
Re: Трябва ми едея за клиент/сервер програмче под Perl
слабо рабирам perl и не знам демон как с се пише на него (и дали може изобщо) Иначе на Цъ (С
) много лесно се прави и демон и IP socket - може би е добре демона да си го направиш на С а той като слуша на някой порт няма никав проблем клиента да е на perl
Re: Трябва ми едея за клиент/сервер програмче под Perl
Ами айде помогни.
Работата е там че има още доста работи да прави този демон.
Ето и цялата идея:
Да направя програма за НЕТ зала, Която се базира на:
Perl+MySQL+Apache+iptables
И ина следните задачи:
1. Отчитане на трафика на всяко PC
2. Блокиране на трафика към PC
3. Работа с различни тарифи.
Писмено е следното:
1. Да се състой от две части
- Едната Server-na която да чака за определена задача и да ги изпълнява
например при даден сигнал да пуска команда и да записва данните в база
- Втората клиентска част с която да се задава какво ще пуска Server-nata част
Проблема не ми е в работата с базата от данни и написването на web формите..
А как да се предават данните от Admin PC на Linux gateway
Може би с модула: IO::Socket::INET
Съгласен съм да напиша WEB интерфейса и работата с базата от данни (MySQL) и извличане на справките.
Но за комуникационата част сам още далеч.
Ще ми се това да бъде GNU project така че да се използва от много интернет зали.
Разбира се програмното обезпечение ще се търкаля на Linux.
Работата е там че има още доста работи да прави този демон.
Ето и цялата идея:
Да направя програма за НЕТ зала, Която се базира на:
Perl+MySQL+Apache+iptables
И ина следните задачи:
1. Отчитане на трафика на всяко PC
2. Блокиране на трафика към PC
3. Работа с различни тарифи.
Писмено е следното:
1. Да се състой от две части
- Едната Server-na която да чака за определена задача и да ги изпълнява
например при даден сигнал да пуска команда и да записва данните в база
- Втората клиентска част с която да се задава какво ще пуска Server-nata част
Проблема не ми е в работата с базата от данни и написването на web формите..
А как да се предават данните от Admin PC на Linux gateway
Може би с модула: IO::Socket::INET
Съгласен съм да напиша WEB интерфейса и работата с базата от данни (MySQL) и извличане на справките.
Но за комуникационата част сам още далеч.
Ще ми се това да бъде GNU project така че да се използва от много интернет зали.
Разбира се програмното обезпечение ще се търкаля на Linux.
Re: Трябва ми едея за клиент/сервер програмче под Perl
пиши ми тука: bozho@issp.bas.bg
може да заформим нещо
пролемът ми е с времето (по-точно липсата му) ама да видим
може да заформим нещо
пролемът ми е с времето (по-точно липсата му) ама да видим
Re: Трябва ми едея за клиент/сервер програмче под Perl
Towa go polzwam kato parser na wunshni HTML stranici. Wij dali moje da ti swurshi rabota
$sock = new IO::Socket::INET ( PeerAddr => $SERVER_NAME,
PeerPort => 80,
Proto => 'tcp')
or die('Cannot connect to localhost.');
print $sock "GET /$PATH_ON_SERVER HTTP/1.0\n\n";
do
{
$buf = <$sock>;
chomp($buf);
print $buf # ili kakwoto tam iskash da prawish s $buf
}
while (index($buf, "</html>") == -1);
close(FILE);
$sock->close();
}
$sock = new IO::Socket::INET ( PeerAddr => $SERVER_NAME,
PeerPort => 80,
Proto => 'tcp')
or die('Cannot connect to localhost.');
print $sock "GET /$PATH_ON_SERVER HTTP/1.0\n\n";
do
{
$buf = <$sock>;
chomp($buf);
print $buf # ili kakwoto tam iskash da prawish s $buf
}
while (index($buf, "</html>") == -1);
close(FILE);
$sock->close();
}
Re: Трябва ми едея за клиент/сервер програмче под Perl
Може ли да го разтълкуваш горния пример.
И ако знаех как мога да подавам данни използвайки този модул
И ако знаех как мога да подавам данни използвайки този модул
Re: Трябва ми едея за клиент/сервер програмче под Perl
Mi kakwo da go komentiram te powecheto neshta sa standartni i gi pishe wuw wsqka knijka moje bi samo tezi 2 te:
1) close(FILE) - towa e izlishno zabrawih da go iztriq
2) print $sock "GET /$PATH_ON_SERVER HTTP/1.0\n\n"; - s towa izprashtash na web servera zaqwka za daden document /$PATH_ON_SERVER ti e imeto na documenta. Sled towa chakash da ti wurne wsichko ostanalo si gi go prwish kakwoto iskash. Zqwkata i otgowora minawat prez $sock koito w momenta ti e kato "tunel" do servera
Ako shte polzwash drugi protokoli i svoi server - organizirai si zaqwkite po razlichen nachin ako iskash no ideqta si ostawa sushtata - connectwash se, dawash zqwka i posle chakash otgowora
1) close(FILE) - towa e izlishno zabrawih da go iztriq
2) print $sock "GET /$PATH_ON_SERVER HTTP/1.0\n\n"; - s towa izprashtash na web servera zaqwka za daden document /$PATH_ON_SERVER ti e imeto na documenta. Sled towa chakash da ti wurne wsichko ostanalo si gi go prwish kakwoto iskash. Zqwkata i otgowora minawat prez $sock koito w momenta ti e kato "tunel" do servera
Ako shte polzwash drugi protokoli i svoi server - organizirai si zaqwkite po razlichen nachin ako iskash no ideqta si ostawa sushtata - connectwash se, dawash zqwka i posle chakash otgowora
Re: Трябва ми едея за клиент/сервер програмче под Perl
server-ната част се нарича apache. клиентската е известна и под името browser.
правиш си едно скриптче дето като го пуснеш пуска/спира/дава инфо за трафика. така че през браузер клиента да си се пуска/спира сам. както и да гледа колко е навъртял.
отделно може и някакъв администратор/дежурен да пуска или спира навалицата.
самото пускане и спиране май е най-лесно да го направиш от firewall-a (ipfwadm/ipchains/iptables).
и естествено слагаш и проверчица да не може пц1 да спре пц5 (т.е. да си правят мръсно един на друг клиентите)
ps. пък цялото обсъждане досега ми прилича малко на 'защо просто, като може и сложно'
TANSTAAFL! There AiNt Such Thing As A Free Lunch
правиш си едно скриптче дето като го пуснеш пуска/спира/дава инфо за трафика. така че през браузер клиента да си се пуска/спира сам. както и да гледа колко е навъртял.
отделно може и някакъв администратор/дежурен да пуска или спира навалицата.
самото пускане и спиране май е най-лесно да го направиш от firewall-a (ipfwadm/ipchains/iptables).
и естествено слагаш и проверчица да не може пц1 да спре пц5 (т.е. да си правят мръсно един на друг клиентите)
ps. пък цялото обсъждане досега ми прилича малко на 'защо просто, като може и сложно'
TANSTAAFL! There AiNt Such Thing As A Free Lunch
Редактирано от onzi на
Re: Трябва ми едея за клиент/сервер програмче под Perl
Не съм съгласен с горното мнение защото:
iptables или ipchains трябва да останат с root права.
По default apacheto си дига като nobody.
Иначе става страшно.
Затова идеята беше да има сърверна част стартирана с root права и
да може да комуникира с някой клиент.
Получавайки сигнал тя ще провери от кой идва и тогава ще реши какво
да изпълни.
Затова и Linux e стабилен.
Защото всеки процес се изпълнява от някого.
А оставяйки Apacheto да се изпълнява от root то става и една заплаха.
А нека да оставим ipchains и iptables на root-a.
Иначе отиде ни firewall.
Ако греша поправетеме ...
iptables или ipchains трябва да останат с root права.
По default apacheto си дига като nobody.
Иначе става страшно.
Затова идеята беше да има сърверна част стартирана с root права и
да може да комуникира с някой клиент.
Получавайки сигнал тя ще провери от кой идва и тогава ще реши какво
да изпълни.
Затова и Linux e стабилен.
Защото всеки процес се изпълнява от някого.
А оставяйки Apacheto да се изпълнява от root то става и една заплаха.
А нека да оставим ipchains и iptables на root-a.
Иначе отиде ни firewall.
Ако греша поправетеме ...
Re: Трябва ми едея за клиент/сервер програмче под Perl
ми то си има setuid за целта. то и pppd-то го пускаш като обикновен усер, ама то ти сменя рутингите - т.е. има админ права.
TANSTAAFL! There AiNt Such Thing As A Free Lunch
TANSTAAFL! There AiNt Such Thing As A Free Lunch
Re: Трябва ми едея за клиент/сервер програмче под Perl
Знам че може.
Но аз твърдя че не е удачно да се сетват ipchains или iptables та да може да се изпълняват от всеки.
Иначе отваряш вратичка ... за някой.
Ще кажеш че може да ограничиш кой да ползва дадена страница по
IP и т.н.
Но нека да оставим ipchains или iptables да може да се пускат само от root-a
Все пак с тях контролираш TCP трафика.
Нека да оставим това до тук.
И да търсим идей за развитие заложени в началото.
За да не стане БУМ някога ...
Но аз твърдя че не е удачно да се сетват ipchains или iptables та да може да се изпълняват от всеки.
Иначе отваряш вратичка ... за някой.
Ще кажеш че може да ограничиш кой да ползва дадена страница по
IP и т.н.
Но нека да оставим ipchains или iptables да може да се пускат само от root-a
Все пак с тях контролираш TCP трафика.
Нека да оставим това до тук.
И да търсим идей за развитие заложени в началото.
За да не стане БУМ някога ...
Re: Трябва ми едея за клиент/сервер програмче под Perl
procheti pak kakvo sam ti pisal po-gore
route e programata, koiato se puska samo ot root (ili pri teb - iptables). pppd e programata, koiato puska vseku user (pri teb - nesto_si.cgi ili nesto_si.pl), koiato obache poneje e setuid-nata si vika route.
pak ako tolkoz te e strah - pishesh si ot skripta primerno vav /tmp/start i /tmp/stop i ot cron-a si vikash vsiaka minuta po nesto, koeto proveriava kakvo pishe tam i pravi kvoto triabva - puska, spira i t.n.
dosadata obache e che ako klienta iskash da go pusnesh v 16 chasa, 12 min i 10 sekundi, ot cron-a ste go pusne v 16:13. i klienta ste sedi 50 sekundi. dosta vreme si e tova.
TANSTAAFL! There AiNt Such Thing As A Free Lunch
route e programata, koiato se puska samo ot root (ili pri teb - iptables). pppd e programata, koiato puska vseku user (pri teb - nesto_si.cgi ili nesto_si.pl), koiato obache poneje e setuid-nata si vika route.
pak ako tolkoz te e strah - pishesh si ot skripta primerno vav /tmp/start i /tmp/stop i ot cron-a si vikash vsiaka minuta po nesto, koeto proveriava kakvo pishe tam i pravi kvoto triabva - puska, spira i t.n.
dosadata obache e che ako klienta iskash da go pusnesh v 16 chasa, 12 min i 10 sekundi, ot cron-a ste go pusne v 16:13. i klienta ste sedi 50 sekundi. dosta vreme si e tova.
TANSTAAFL! There AiNt Such Thing As A Free Lunch
Re: Трябва ми едея за клиент/сервер програмче под Perl
може би модул Net::Server.
От името на модула май там е истината.
но несам го пробвал
От името на модула май там е истината.
но несам го пробвал
Re: Трябва ми едея за клиент/сервер програмче под Perl
ето и един примерен код за server-a.
t.e. часта която ще чете даните и ще изпълнява нещо си:
----------------------------------------------------
#!/usr/bin/perl
use IO::Socket;
use POSIX;
use constant PORT => 7447;
use constant MAXTOREAD => 576;
$pid=fork;
exit if $pid;
POSIX::setsid() or die "Can't start new session: $!\n";
$time_to_die=0;
sub signal_handler { $time_to_die=1 }
$SIG{TERM}=$SIG{HUP}=\&signal_handler;
$SIG{PIPE}='IGNORE';
$server=IO::Socket::INET->new(LocalPort=> PORT, Proto => "udp") or die "Couldn't be udp server on port PORT : $@\n";
until($time_to_die) {
while ($sock=$server->recv($mesg,MAXTOREAD)) {
my ($port,$ipaddr) = sockaddr_in($server->peername);
$host=gethostbyaddr($ipaddr,AF_INET);
$host - това е хоста който праща информацията
$mesg - текста който се изпраща
......
......
Надолу ти си слагаш кода
}
}
За клиентската част:
----------------------------------------------
#!/usr/bin/perl
use IO::Socket;
use POSIX;
use constant PORT => 7447;
use constant SERVERHOST => "server_ip";
sub sendmesg {
my $mesg=$_[0];
my $sock=IO::Socket::INET->new(Proto => "udp",PeerPort=> PORT,
PeerAddr=>SERVERHOST) or print "Creating socket : $!\n";
$sock->send($mesg) or print "send: $!\n";
}
sendmesg($msg);
t.e. часта която ще чете даните и ще изпълнява нещо си:
----------------------------------------------------
#!/usr/bin/perl
use IO::Socket;
use POSIX;
use constant PORT => 7447;
use constant MAXTOREAD => 576;
$pid=fork;
exit if $pid;
POSIX::setsid() or die "Can't start new session: $!\n";
$time_to_die=0;
sub signal_handler { $time_to_die=1 }
$SIG{TERM}=$SIG{HUP}=\&signal_handler;
$SIG{PIPE}='IGNORE';
$server=IO::Socket::INET->new(LocalPort=> PORT, Proto => "udp") or die "Couldn't be udp server on port PORT : $@\n";
until($time_to_die) {
while ($sock=$server->recv($mesg,MAXTOREAD)) {
my ($port,$ipaddr) = sockaddr_in($server->peername);
$host=gethostbyaddr($ipaddr,AF_INET);
$host - това е хоста който праща информацията
$mesg - текста който се изпраща
......
......
Надолу ти си слагаш кода
}
}
За клиентската част:
----------------------------------------------
#!/usr/bin/perl
use IO::Socket;
use POSIX;
use constant PORT => 7447;
use constant SERVERHOST => "server_ip";
sub sendmesg {
my $mesg=$_[0];
my $sock=IO::Socket::INET->new(Proto => "udp",PeerPort=> PORT,
PeerAddr=>SERVERHOST) or print "Creating socket : $!\n";
$sock->send($mesg) or print "send: $!\n";
}
sendmesg($msg);
Re: Трябва ми едея за клиент/сервер програмче под
ideqta za GNU e mnogo dobra no malko hora se saglasqvat s tova da pomagat znam edin 4ovek ako vlizash v IRc vlez v #700 tarsi Mr700 to e napravil takava programa i ve4e nqkolko zali rabotqt s neq no mislq 4e ispolzva komersialnoto ako si sladkodumen moje da ti pomogne . kazva se Dan4o :))))) Uspeh !!!