Mise en forme de code: pensez à utiliser les balises [ tcl ] et [ /tcl ] (sans les espaces bien sûr) autour de vos codes tcl afin d'avoir un meilleur rendu et une coloration syntaxique. x


erreur script et connection bdd
#1
bonjour je debute aussi ds les scripts et je n'arrive pas a faire une connction a une base mysql avec le script suivant (codé par DAV34) :

Code:
##############
# CONFIGURATION #
##############

# -> Login
set sql(login) "pred"
# -> Mot de passe
set sql(pass) "*****"
# -> Nom de la base de donnée
set sql(db) "pre2"
# -> L'host a l'aquelle ce connecté
set sql(host) "adresses"
# -> Localisation de fichier mysql.sock
set sql(sock) "/tmp/mysql.sock"

###########
# PAQUETAGE #
###########
  
catch {package require mysqltcl}

#######
# CODE  #
#######

#########
# CONNECT #
#########
proc service:connect {} {
    set ::mysqlink [mysqlconnect -host $::sql(host) -user $::sql(login) -password $::sql(pass) -sock $::sql(sock)]
    mysqluse $::mysqlink $::sql(db)
}

###########
# DECONNECT #
###########

proc service:deconnect {} {
    mysqlclose $::mysqlink; unset -nocomplain ::mysqlink    
}

########
# ISAUTH #
########

proc isauth {arg} {
   service:connect
   set res [mysqlsel $::mysqlink "select statut from access where pseudo = '$arg' and statut = 'On'"]
   service:deconnect
   return $res
}

##########
# ISSUSPEND #
##########

proc issuspend {arg} {
   service:connect
   set res [mysqlsel $::mysqlink "select statut from access where pseudo = '$arg' and suspend = 'On'"]
   service:deconnect
   return $res
}

############
# ISVALIDUSER #
############

proc isvaliduser {arg} {
   service:connect
   set res [mysqlsel $::mysqlink "select pseudo from access where pseudo = '$arg'"]
   service:deconnect
   return $res
}

################
# ISVALIDPASSWORD #
################

proc isvalidpassword {mot1 mot2} {
   service:connect
   set res [mysqlsel $::mysqlink "select pseudo, pass from access where pseudo = '$mot1' and pass = '$mot2'"]
   service:deconnect
   return $res
}

########
# AUTH #
########

proc auth {arg} {
   service:connect
   mysqlsel $::mysqlink "UPDATE `access` SET `statut` = 'On' WHERE pseudo = '$arg'"
   service:deconnect
}

#######
# AUTH  #
#######

bind msg - auth msg:auth
proc msg:auth {nick host hand arg} {
   set mot1 [lindex $arg 0]
   set mot2 [lindex $arg 1]
   if { $mot1 == "" || $mot2 == "" } { puthelp "NOTICE $nick :Commande auth : /msg $::botnick auth <pseudo> <pass>"; return 0 }
   if { ![isvaliduser $mot1] } { puthelp "NOTICE $nick :$mot1 user inconnue !"; return 0 }
   if { [isvalidpassword $mot1 $mot2] } {
      if { [issuspend $mot1] } { puthelp "NOTICE $nick :Accés suspendu"; return 0 }
      if { [isauth $mot1] } { puthelp "NOTICE $nick :Vous êtes déjà  identifié !"; return 0 }
      puthelp "NOTICE $nick :Félicitation, vous êtes identifier"
      auth $mot1
   } else {
      puthelp "NOTICE $nick :Erreur, mot de passe incorrect."; return 0
   }
}
#########
# SQLTEST #
#########

# Il vous faudra taper .afficher en dcc chat pour que cette commande fonctionne

bind dcc afficher dcc:afficher
proc dcc:afficher {hand idx arg} {
    service:connect
    mysqlsel $::mysqlink "SELECT * FROM `access` ORDER BY id"
    if {[mysqlresult $::mysqlink rows] ne 0} {
        while {[set row [mysqlnext $::mysqlink]] != ""} {
                  putlog "id : [lindex $row 0]"
                  putlog "pseudo : [lindex $row 1]"
                  putlog "pass : [lindex $row 2]"
                  putlog "grade : [lindex $row 3]"
                  putlog "suspend : [lindex $row 4]"
                  putlog "statut : [lindex $row 5]"
            }
        }
    service:deconnect
}

bind dcc B accesslist accesslist:cmd
proc accesslist:cmd {hand idx arg} {
    service:connect
    mysqlsel $::mysqlink "SELECT * FROM `access` ORDER BY nick"
        if {[mysqlresult $::mysqlink rows] ne 0} {
            while {[set row [mysqlnext $::mysqlink]] != ""} {
                putdcc $idx "\2[lindex $row 0]\2 \[pass\] [lindex $row 1] \[host/ip\] [lindex $row 2] \[e-mail\] [lindex $row 3]"
            }
        }
    service:deconnect
    putdcc $idx "\2\2"
    putdcc $idx "\2Fin de la liste\2."
    return 1
}
putlog "Test v. 1.1 (C)  successfully loaded"
qui est le code que j'ai trouvé sur le wiki

quand je tape !accesslist je recuperer cet erreur en dcc sur le bot
Identd Already Disabled. (Tried to Close)
[08:00] <bot> [08:00:01] * Context: tclhash.c/721 []
et impossible de tester la connection

comment trouver une commande simple pouvant me retourner l'etat de la connection sql ??
merci d'avance
#2
bon j'ai essayé avec un autre script sitedb.v1.0 trouver sur tclscript.com
le script se lance impec
mais a la commande !site www.google.fr add
voici l'erreur

Code:
[08:43:45] Sitedb.v1.0: Checking if WWW.GOOGLE.FR exists ...
[08:43:45] Sitedb.v1.0: Executing SELECT * FROM sites WHERE channel='#zorrax' AND shortname='WWW.GOOGLE.FR'
[08:43:45] * Last context: tclhash.c/710 [Tcl proc: sitedb, param:  $_pub1 $_pub2 $_pub3 $_pub4 $_pub5]
[08:43:45] * Please REPORT this BUG!
[08:43:45] * Check doc/BUG-REPORT on how to do so.
[08:43:45] * Wrote DEBUG
[08:43:45] * SEGMENT VIOLATION -- CRASHING!
ds le script j'ai remplacer
#load /usr/lib/libmysqltcl2.50.so
par
catch {package require mysqltcl}

est ce que ca a une grosse influence ?
[/code][/align]
#3
la connection bdd a été testé et marche mais toujours le probleme du script

Code:
# Il vous faudra taper .afficher en dcc chat pour que cette commande fonctionne
bind dcc - afficher dcc:afficher
proc dcc:afficher {hand idx arg} {
    service:connect
    mysqlsel $::mysqlink "SELECT * FROM `access` ORDER BY id"
    if {[mysqlresult $::mysqlink rows] ne 0} {
        while {[set row [mysqlnext $::mysqlink]] != ""} {
                  putlog "id : [lindex $row 0]"
                  putlog "pseudo : [lindex $row 1]"
                  putlog "pass : [lindex $row 2]"
                  putlog "grade : [lindex $row 3]"
                  putlog "suspend : [lindex $row 4]"
                  putlog "statut : [lindex $row 5]"
            }
        }
    service:deconnect
}
avec ce script de dav34 pareil

Code:
<zorrax> .afficher
[19:32] <bot> [19:32:50] * Last context: tclhash.c/710 [Tcl proc: dcc:afficher, param:  $_dcc1 $_dcc2 $_dcc3]
[19:32] <bot> [19:32:50] * Please REPORT this BUG!
[19:32] <bot> [19:32:50] * Check doc/BUG-REPORT on how to do so.
[19:32] <bot> [19:32:50] * Wrote DEBUG
[19:32] <bot> [19:32:50] * SEGMENT VIOLATION -- CRASHING!
-
DCC session closed
le bot plante
est ce que quelqu'un a eu la meme erreur ??


Possibly Related Threads…
Thread Author Replies Views Last Post
  erreur script youtube zyrte 17 13,132 18/11/2012, 11:31
Last Post: CrazyCat
  voir l'ip lors d'une connection lesny 4 4,180 06/01/2011, 22:57
Last Post: lesny

Forum Jump:


Users browsing this thread: 1 Guest(s)