Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   вопрос по коду (python) (https://forum.antichat.xyz/showthread.php?t=99700)

gold-goblin 06.01.2009 01:54

вопрос по коду (python)
 
Я только начинаю его учить...
Тут набросал маленькую программку.

сервер
Код:

import socket
import os
print 'vvedite ima polzovatela dla podklychenia?'
name = raw_input("--> ")
print 'vvedite parol dla dostypa'
pass = raw_input("--> ")
sock = socket(AF_UNIX, SOCK_STREAM)
sock.bind(("",8888))
sock.listen(1)
while 1:
    client,addr = s.accept()
    sock.connect((client, addr))
    print "podklychilsa ",addr
    client.send('name?')
    paket = s.recv(2048)
    if paket == ('  ', pass,'  ', name):
            client.send('est kontakt')
            # Здесь получаем и выполняем команды в цикле
            for targar in -1:
                    paket = s.recv(2048)
                    cmd = os.popen("C:\\windows\system32\cmd.exe", paket)
                    print 'popitka vipolnit komandy' paket
                    otvet_cmd = cmd.read()
                    print 'rezyltat vipolnenia' otvet_cmd
                    client.send(otvet_cmd)
                    # надо сделать выход из цикла =)
                    # здесь запись в лог фаил (это надо сделать как доп опцию

    else:
            client.send('net kontakta')


Клиент

Код:

import socket
print 'vibirite vashu OS'
print '1 - Windows'
print '2 - Linux'
sistem = raw_input("--> ")
if sistem == 1:
        sock = socket(AF_INET, SOCK_STREAM)
elif sistem == 2:
        sock = socket(AF_UNIX, SOCK_STREAM)
print 'adres servera'
server = raw_input("--> ")
print 'port servera'
port = raw_input("--> ")
sock.connect((server,port))
paket = s.recv(2048)
if paket == name?:
        print 'vvedite ima'
        name = raw_input("--> ")
        print 'vvedite pass'
        pass = raw_input("--> ")
        client.send('  ', pass,'  ', name)
        paket = s.recv(2048)
        if paket == est kontakt:
                print 'gotov k peredache komandi'
                # Тут швыряем команды в бесконечном цикле =)
                for targar in -1:
                        komanda = raw_input("--> ")
                        client.send(komanda)
                        print 'rezyltat vipolnenia'
                        paket = s.recv(2048)
                        print paket
                        # надо сделать выход из цикла
                       
        elif paket == net kontakta:
                print 'avtorizachija ne ydolas'
s.close()

У меня при запуске выдает кучу ошибок.... если кому не сложно подскажите почему там ошибка (что я сделал не правельно) с меня +

De-visible 06.01.2009 02:16

Щас занят немного но при беглом взгляде могу сказать точно, что переменной pass не должно быть!, так как в питоне есть такая функция.
Так что переименуй.

De-visible 06.01.2009 02:20

Так
Цитата:

print 'popitka vipolnit komandy' paket
и так

Цитата:

print 'rezyltat vipolnenia' otvet_cmd
Делать незя!11

Исправь на:
Цитата:

print 'popitka vipolnit komandy '+ paket
Цитата:

print 'rezyltat vipolnenia '+ otvet_cmd
И еще не забывай не у всех никсы))

De-visible 06.01.2009 02:30

Цитата:

sock = socket(AF_INET, SOCK_STREAM)
меня учили делать так:
Цитата:

socket.socket(socket.AF_INET, socket.SOCK_STREAM)

De-visible 06.01.2009 02:33

Цитата:

client,addr = s.accept()
что такое 's' ? Питон это откуда должен знать?=>
Код:

client,addr = sock.accept()
И вот на этом этапе сервер начинает работать!11
порадовались))
блин я на отходняках)) позитиффф бля.

De-visible 06.01.2009 02:41

И на этом этапе сдох питон((
Оживился...

Цитата:

sock = socket(AF_UNIX, SOCK_STREAM)
sock = socket(AF_INET, SOCK_STREAM)

Код:

sock =socket.socket(socket.AF_INET,socket.SOCK_STREAM)
sock =socket.socket(socket.AF_UNIX,socket.SOCK_STREAM)

Далее че за хрень?:

Код:

if paket == name?:
Зачем там вопросительный знак? Удаляй его.

Далее:

Та же хрень с pass

переименовывай.

Далее:

Код:

if paket == est kontakt:
Жесть на этом этапе расхотелось смотреть дальше((

Где кавычки то?

Далее

Код:

elif paket == net kontakta:
Здесь тоже самое.

gold-goblin 06.01.2009 03:03

De-visible
Большое СПАСИБО!!!
Кстати кавычки есть,,, странно почему то не копировались на форум.
Буду мучать дальше =)

De-visible 06.01.2009 03:06

PHP код:

import socket
import os
print 'vvedite ima polzovatela dla podklychenia?'
name ="admin" #raw_input("--> ")
print 'vvedite parol dla dostypa'
password ="123" #raw_input("--> ")
sock socket.socket(socket.AF_INETsocket.SOCK_STREAM)
sock.bind(("127.0.0.1",8888))
sock.listen(1)
while 
1:
    
client,addr sock.accept()
    
sock.connect((clientaddr))
    print 
"podklychilsa ",addr
    client
.send('name?')
    
paket s.recv(2048)
    if 
paket == ('  'password,'  'name):
        
client.send('est kontakt')
        
# Здесь получаем и выполняем команды в цикле
        
for targar in -1:
            
paket s.recv(2048)
            
cmd os.popen("C:\\windows\system32\cmd.exe"paket)
            print 
'popitka vipolnit komandy 'paket
            otvet_cmd 
cmd.read()
            print 
'rezyltat vipolnenia 'otvet_cmd
            client
.send(otvet_cmd)
            
# надо сделать выход из цикла =)
            # здесь запись в лог фаил (это надо сделать как доп опцию

    
else:
        
client.send('net kontakta'

PHP код:

import socket
print 'vibirite vashu OS'
print '1 - Windows'
print '2 - Linux'
sistem raw_input("--> ")
if 
sistem == 1:
    
sock socket.socket(socket.AF_INETsocket.SOCK_STREAM)
elif sistem == 2:
    
sock socket.socket(socket.AF_UNIXsocket.SOCK_STREAM)
print 
'adres servera'
server raw_input("--> ")
print 
'port servera'
port raw_input("--> ")
sock.connect((server,port))
paket s.recv(2048)
if 
paket == name:
    print 
'vvedite ima'
    
name raw_input("--> ")
    print 
'vvedite pass'
    
password raw_input("--> ")
    
client.send('  'password,'  'name)
    
paket s.recv(2048)
    if 
paket == "est kontakt":
        print 
'gotov k peredache komandi'
        
# Тут швыряем команды в бесконечном цикле =)
        
for targar in -1:
            
komanda raw_input("--> ")
            
client.send(komanda)
            print 
'rezyltat vipolnenia'
            
paket s.recv(2048)
            print 
paket
            
# надо сделать выход из цикла
            
    
elif paket == "net kontakta":
        print 
'avtorizachija ne ydolas'
s.close() 

ВОт вообщем..
Кстати не желательно начинать учить питон с сокетов, не зная даже о существовании функции pass
((
Зы: вот я тут чат устроил... вообщем закрыто, если что велкам ту PM.


Время: 13:04