Einfachste Onlinestellung eines Scriptes

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Boby666666
User
Beiträge: 57
Registriert: Montag 8. Januar 2007, 10:53
Kontaktdaten:

Montag 21. Mai 2007, 19:06

So habe nur das schöne Bunte Tutorial befolgt... musste feststellen das, das meiste schon voreingestellt war und konnte IMMERNOCH NICHT auf die Datei zugreifen... Wenn wenigstens ein Fehler kommen würde, aber er sagt ja Datei ist nicht existent... Und ich habe alles probiert...

Sr4l hat geschrieben:Ich weiß nicht ob eine reine HTML Seite über CGI mit Python generiert das richtige ist um eine Chat zu simulieren.

Ich würde es in einen Python IRC Bot packen und dann im IRC Testen
Script kann ich posten, wenn du mal ein Beispiel haben möchtest.
Ohhh ja! Das wäre nett... hoffentlich bekomme ich das dann auch irgendwie eingebaut...
Benutzeravatar
Sr4l
User
Beiträge: 1091
Registriert: Donnerstag 28. Dezember 2006, 20:02
Wohnort: Kassel
Kontaktdaten:

Montag 21. Mai 2007, 19:44

Nicht über den Code meckern er ist schon älter, einige sachen sollte man nicht machen, anderes fehlt, es ist nicht mal in Klassen gepackt würde ich IRC brauchen würde ich es auch nochmal umschreiben. Was du Kommentare heißen weiß ich auch nicht mehr.... :

Code: Alles auswählen

#! /usr/bin/env python
#

import socket
import string
import re
import thread
import time

byte = 1024
port = 6667
serv = "irc.freenode.org"
nick = "Bot1101b"
user = "email@geheimeranbiter.de"
real = "Lars Kistner"
chan = "#sr4l"
#
#
#
def HandleData():
    while True:
        data = sock.recv(byte)
        msg = re.split(" ",data)
        if "MOTD" in data: sock.send("JOIN %s\n\r" % chan) #print "JOIN %s"%chan                # Nach dem connecten joined er dem channel den er soll
        if "PING" in data: sock.send("PONG %s\n\r" % msg[1][1:]) #print "PONG: %s"%msg[1]       # Muss noch defeniert werden ist sonst zu doof
        if "To connect, type" in data: sock.send("PONG %s\n\r" % msg[8]) #instable?
        #
        try:
            msg_nick = re.split("!",msg[0])[0]
            if msg[1] == "PRIVMSG": print msg_nick," ",msg[3]
            if "CHECK"  in data:
                sock.send("PRIVMSG %s :ANSWER %s\n\r" %(chan,time.time()))
            if "NAME"  in data:
                WhoIs(msg[4])
            if "ANSWER" in data:
                sock.send("PRIVMSG %s :IHEAR  %s\n\r" %(chan,time.time()))
                sock.send("PRIVMSG %s :ANSWER %s\n\r" %(chan,time.time()))
                
        except: pass
        print "data: ",data
        time.sleep(1)
        #print "msg : ",msg
#
def SendText(text):
    sock.send("PRIVMSG %s :%s\n\r" %(chan,text))
def WhoIs(name):
    sock.send("WHOIS %s\n\r" %(name))
#
#
def Connect():
    global sock
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    sock.connect((serv, port))
    thread.start_new_thread(HandleData,())
    sock.send('NICK %s\n\r' %nick)
    sock.send("USER %s Sr4l Sr4l : %s\n\r" %(user,real))
    while True:
        time.sleep(2)

Connect()
How it works:

Code: Alles auswählen

(20:40:29) <Sr4l> CHECK
(20:40:30) <Bot1101b> ANSWER 1179772829.67
Was ist zu tun?:

Die Variablen zu Anfang sind zu ändern und in der 5ten Zeile von unten stehen noch zwei 'Sr4l's wieso auch immer.

Probleme?
Wenn der Bot nicht joined muss man immer die Fehlermeldungen lesen die IRC zurückgibt.
Entweder hat die Anmeldung nicht gelkappt. Man hat schon zuviel reconnectet und all son Zeug.
Boby666666
User
Beiträge: 57
Registriert: Montag 8. Januar 2007, 10:53
Kontaktdaten:

Montag 21. Mai 2007, 20:33

Versteh mich bitte nicht falsch! Ich bin dir SEHR dankbar das du mir das hier zur verfügung stellst. Aber ich schaffe es patu nicht das der Dummer Server nicht 404 sagt wenn ich die Pythondatei anwähle.

Was zum hänker mache ich falsch? Es ist alles installiert und genau wie in der Beschreibung steht konfiguriert. Ich habe es mittlerweile auch noch von einem Administrator auf schreibfehler oder Positionsfehler prüfen lassen aber nix! Ich lese immer nur 404.
Da hilft mir auch kein anderes Python script. Ich brauche jemanden der sagt: "Klar, kann nur an dem und den liegen"
Aber leider gibt es sojemanden leider scheinbar nicht.
Benutzeravatar
Sr4l
User
Beiträge: 1091
Registriert: Donnerstag 28. Dezember 2006, 20:02
Wohnort: Kassel
Kontaktdaten:

Montag 21. Mai 2007, 20:55

Das IRC script ist nicht fürn Server als Website gedacht das kannst nur ausführen.

Aber wenn du möchtest das ein CGI Seite läuft schau dir die folgende Seite an da gibt es zu deinem Fehler gleich mehrere Möglichkeiten:
[wiki]Web-Skripte zum Laufen bringen[/wiki]?action=show&redirect=Web-Skripte+zum+laufen+bringen

das mit der Überschrift mod_python kannst du weglassen.
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Montag 21. Mai 2007, 22:35

Sr4l hat geschrieben:[wiki]Web-Skripte zum Laufen bringen[/wiki]
Das Problem dieser Seite ist, dass sie stark auf Apache oder zumindest auf Unices zentriert ist. Ich tippe darauf dass du IIS nutzt - am besten du wendest dich an den entsprechenden Support, da hier im Forum die Anzahl der User die IIS betreiben wohl eher gering ist.
Aber das von thelittlebug gepostete Tutorial sollte doch einfach nachzuvollziehen sein..
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Boby666666
User
Beiträge: 57
Registriert: Montag 8. Januar 2007, 10:53
Kontaktdaten:

Dienstag 22. Mai 2007, 06:39

Leonidas hat geschrieben:
Sr4l hat geschrieben:[wiki]Web-Skripte zum Laufen bringen[/wiki]
Das Problem dieser Seite ist, dass sie stark auf Apache oder zumindest auf Unices zentriert ist. Ich tippe darauf dass du IIS nutzt - am besten du wendest dich an den entsprechenden Support, da hier im Forum die Anzahl der User die IIS betreiben wohl eher gering ist.
Aber das von thelittlebug gepostete Tutorial sollte doch einfach nachzuvollziehen sein..
Das war es auch. Aber wie bereits gepostet hat es NULL gebracht.
Und das schlimmste für mich ist ja das er keinen vernünftigen Fehler ausgibt sondern immer nur 404 als wenn es die Datei nicht gäbe.
Boby666666
User
Beiträge: 57
Registriert: Montag 8. Januar 2007, 10:53
Kontaktdaten:

Dienstag 22. Mai 2007, 06:57

Also der Link: Web-Skripte zum Laufen bringen hat mir echt geholfen.
Ich bin jetzt soweit das er die Scripte ausführt.
Allerdings nur wenn ich auf die "Notlösung" zurückgreife und das .py Script in .cgi umbenenne.
Soweit so gut erstmal mit dieser Notlösung kann ich leben.

Jetzt muss ich es aber noch schaffen das Script (was bislang nur im Dosfenster läuft) so laufen zu lassen, daß es auch im Web funktioniert.
Benutzeravatar
Sr4l
User
Beiträge: 1091
Registriert: Donnerstag 28. Dezember 2006, 20:02
Wohnort: Kassel
Kontaktdaten:

Dienstag 22. Mai 2007, 08:25

Leonidas hat geschrieben:
Sr4l hat geschrieben:[wiki]Web-Skripte zum Laufen bringen[/wiki]
Das Problem dieser Seite ist, dass sie stark auf Apache oder zumindest auf Unices zentriert ist. Ich tippe darauf dass du IIS nutzt - am besten du wendest dich an den entsprechenden Support, da hier im Forum die Anzahl der User die IIS betreiben wohl eher gering ist.
Aber das von thelittlebug gepostete Tutorial sollte doch einfach nachzuvollziehen sein..
Das ist das Problem das schreib nie einer was er nutzt. Ich gehe immer von LAMP Sytem mit Debian aus ;-)

@Boby schön wenn nun geht kannst dich ja nach einigem Testen wieder melden.
Boby666666
User
Beiträge: 57
Registriert: Montag 8. Januar 2007, 10:53
Kontaktdaten:

Dienstag 22. Mai 2007, 08:55

Das werde ich tuen.
;)
Ich bastel jetz mal hin und her und wenn ich es mal wieder nicht schaffe, dann belästige ich euch wieder ;)

Und DANKE nochmals für eure Hilfe!

Ohne euch hätte ich Python warscheinlich schon aufgegeben.
Boby666666
User
Beiträge: 57
Registriert: Montag 8. Januar 2007, 10:53
Kontaktdaten:

Dienstag 22. Mai 2007, 10:25

Was ist die arbeitsumgebung Idle doch schön. Man macht was und es klappt oder gibt eine Fehlermeldung.
Im Web gibt es diesen Service leider nicht.
Habe das Script mal unverändert reingestellt: http://paste.pocoo.org/show/1509/

Im Webscript ist oben noch:

Code: Alles auswählen

#!C:\python24\python.exe
# -*- coding: UTF-8 -*-
Und wollte mal sehen was passiert. Aber er lädt sich nur nen Wolf statt das Script auszuführen.

Dadurch das ich nun keinen Fehler bekomme, macht sich das auch recht schwer mit dem Rumprobieren.

Ich weiß ich nerve und verlange viel, aber kann mir BITTE BITTE BITTE einer das Script so modifizieren das es in einfachster Form im Web lauffähig ist?
Danke schonmal an alle die sich die Mühe machen es zu versuchen!
BlackJack

Dienstag 22. Mai 2007, 10:32

Da solltest Du Dich vielleicht erst einmal mit CGI beschäftigen wenn das über einen Webserver laufen soll. Da hast Du keine Ein- und Ausgabe wo man so einfach mit dem Benutzer kommunizieren kann. Ausserdem musst Du mit Cookies oder Session-IDs arbeiten, wenn Du Informationen wie `nett` über mehrere Aufrufe erhalten möchtest.
Boby666666
User
Beiträge: 57
Registriert: Montag 8. Januar 2007, 10:53
Kontaktdaten:

Dienstag 22. Mai 2007, 11:09

BlackJack hat geschrieben:Da solltest Du Dich vielleicht erst einmal mit CGI beschäftigen wenn das über einen Webserver laufen soll. Da hast Du keine Ein- und Ausgabe wo man so einfach mit dem Benutzer kommunizieren kann. Ausserdem musst Du mit Cookies oder Session-IDs arbeiten, wenn Du Informationen wie `nett` über mehrere Aufrufe erhalten möchtest.
Ich finde das ja gut das du gleich weiter denkst, aber ich versuche das nur so leicht wie möglich hin zu bekommen! Eingabefeld, Ausgabe Fenster, fertig.
Also nur so, daß man mit dem Bot spricht und wenn man fertig ist geht. Der soll sich noch nichts merker, ausser dem was er gefragt wurde(das macht er ja schon) und beim nächsten Besuch(er) soll er einfach wieder von vorne starten.
BlackJack

Dienstag 22. Mai 2007, 11:53

Ich denke nicht wirklich weiter. Wie Du sagst merkt sich Dein Bot schon etwas. Bei einem CGI-Aufruf, d.h. *einem* Start des Skriptes, bekommt man aber nur *eine* Eingabe vom Benutzer und kann nur *eine* Ausgabe machen. Wechselseitige Kommunikation geht damit also über mehrere Aufrufe und nicht in einem Programmablauf mit abwechelndem `raw_input()` und ``print``.

CGI ist wie Webseiten, der Benutzer ruft eine URL auf und bekommt eine Antwort. Der einzige Unterschied ist, dass die Antwort bei CGI nicht aus einer statischen Datei, sondern aus einem Programm kommt.
Boby666666
User
Beiträge: 57
Registriert: Montag 8. Januar 2007, 10:53
Kontaktdaten:

Dienstag 22. Mai 2007, 12:16

BlackJack hat geschrieben:Ich denke nicht wirklich weiter. Wie Du sagst merkt sich Dein Bot schon etwas. Bei einem CGI-Aufruf, d.h. *einem* Start des Skriptes, bekommt man aber nur *eine* Eingabe vom Benutzer und kann nur *eine* Ausgabe machen. Wechselseitige Kommunikation geht damit also über mehrere Aufrufe und nicht in einem Programmablauf mit abwechelndem `raw_input()` und ``print``.

CGI ist wie Webseiten, der Benutzer ruft eine URL auf und bekommt eine Antwort. Der einzige Unterschied ist, dass die Antwort bei CGI nicht aus einer statischen Datei, sondern aus einem Programm kommt.
Also ich habe hier mal ein kleines Chatscript:
http://paste.pocoo.org/show/1510/
So in etwa habe ich mir das vorgestellt. Nur soll ebend mein Chatpartner der Bot sein und selber antworten.
Das Chatscript greift ja auch auf eine .txt Datei zu ähnlich dem Bot. Also insoweit müsste es doch gehen.

Ps. Das chatscript funktioniert leider auch nicht fehlerfrei... Aber zur veranschaulichung sollte es reichen.
thelittlebug
User
Beiträge: 188
Registriert: Donnerstag 20. Juli 2006, 20:46
Wohnort: Wien
Kontaktdaten:

Dienstag 22. Mai 2007, 15:43

Ich muss BlackJack recht geben. Es fehlt an Grundlagen. Woher soll der "Bot" erkennen welcher User welcher ist und wo hat er für jeden das eigene "Gespräch gespeichert" ? Spätestens jetzt solltest du erkennen das die Ratschläge von Blackjack vielleicht bißchen nach "Overkill" klingen aber garantiert richtig sind.

Bei CGI wird bei jedem Aufruf das Programm neu gestart. Lebe damit. Lerne damit umzugehen. Fang vielleicht kleiner an ;)

Ich kann mich noch gut daran erinnern wie ich 2000 mit PHP begonnen habe. Mein erstes Script war ein dummer Counter. Das 2te war streetbattle :D
Mach auch zuerst mal einen Counter. Probier dich daran und versuche zu verstehen was da vor sich geht.

lgherby

edit: du meintest es geht nur wenn du die Python Dateien in *.cgi umbenennst. Dann scheinst du wichtige Schritte bei der Serverkonfiguration ausgelassen zu haben. Der Fehler liegt nicht an Python. Lerne deinen Webserver kennen.

p.s. schalt nen gang zurück und machs langsam und ordentlich ;)
Antworten