Eggdrop soll sc_trans starten bzw. stopen

#1
Ich hatte etwas gesucht und habe es in diesem Forum auch gefunden http://www.coding-board.de/showthread.php/8482-PHP-amp-Shell-Befehle?p=76832&viewfull=1#post76832 und wie man sieht habe ich schon etwas versucht, leider bekomme ich es aber nicht hin :mauer:

Also wir haben einen sc_trans (Jukebox, Autostream ...) auf dem Server laufen, um nun auf den Stream zu gelangen muss man ihn kicken. Aber es passiert oft, das die Jukebox schneller ist als der Moderator und so muss dann erneut gekickt werden. Neulich gab es etwas mehr Probleme, da sind die Moderatoren vom Stream geflogen. Ob das nun an der Jukebox lag .... ?

Auf jeden Fall wäre es schöner beim Sendebeginn sc_trans komplett zu stopen und der letzte Moderator startet sc_trans dann wieder.

Ich kann sc_trans per ssh also auf der Shell starten und stopen, nur wie bekomme ich es hin, das dies halt der Eggdrop macht?

Bei !start ... soll also die Jukebox gestartet werden und bei !stop halt gestopt werden.

Ich habe mal in meinen ganzen Backups geschaut, welche ich von früher noch habe und da habe ich folgendes gefunden:

Code:
set radiochannel "#retter-team #casting-retter"

bind pub - !plattenkiste plattenkiste

proc plattenkiste {nick uhost hand chan arg} {
    global radiochannel
    if {[lsearch -exact [string tolower $radiochannel] [string tolower $chan]] != -1 } {
                if {$arg == ""} {
                        putquick "NOTICE $nick : --- Hilfe ---"
                        putquick "NOTICE $nick :'!plattenkiste stop' Stopt die Plattenkiste innerhalb von 60 Sekunden fuer etwa 10 Minuten"
                }
                if {$arg == "hilfe"} {
                        putquick "NOTICE $nick : --- Hilfe ---"
                        putquick "NOTICE $nick :'!plattenkiste stop' Stopt die Plattenkiste innerhalb von 60 Sekunden fuer etwa 10 Minuten"
                }
                if {$arg == "stop"} {
                        set cs [clock format [expr [clock seconds] +600] -format {%H%M}]
                        set cs2 [clock format [expr [clock seconds] +600] -format {%H:%M}]
                        putquick "NOTICE $nick :Die Plattenkiste wird innerhalb von 60 Sekunden gestoppt und um $cs2 automatisch wieder gestartet, einen Start innerhalb von 60 Sekunden kannst Du mit !plattenkiste start durchfuehren"
              #exec /home/streams/plattenkiste/plattenkiste_stop > /dev/null &
              #exec sudo -u streams /home/streams/plattenkiste/plattenkiste_stop > /dev/null &
               exec sudo -u root /home/streams/plattenkiste/plattenkiste_stop > /dev/null &
                }
                if {$arg == "start"} {
                        putquick "NOTICE $nick :Dieser Befehl hat KEINE Funktion und macht GARNICHTS."
                }

        }
return 0
}
Nur leider weiß ich nicht mehr wie das genau lief damals und vor allem ruft er ja plattenkiste_stop auf .... :confused:

Was ich auf der Shell eingeben muss zum starten bzw. stopen sieht so aus:

webtrans/sc_trans/./sc_trans start

webtrans/sc_trans/./sc_trans stop

Ich habe auch schon die Suche benutzt, Google gequält und mich hier durch das ganze Eggdropforum gelesen, aber nichts gefunden was mir weiter helfen könnte.
Außer einem Beitrag wo auf catch hingewiesen wird, damit kann ich aber leider nichts anfangen

Vielleicht klappt es ja doch mit der anderen Sache welche ich gefunden habe, das ich da halt noch etwas anpassen muss oder so? Die Pfade habe ich zumindest angegeben
 
#2
ich habe so etwas ähnliches für ein webradio schon einmal geschrieben hier hast du die abgespeckte version.
einfach transcodername, transdir, configfile und internchan anpassen.

dann musst du nur noch dein bind und proc schreiben und transcoder::start bzw. transcoder::stop verwenden

Code:
namespace eval transcoder {

    variable pid ""
    variable transcodername "sc_trans"
    variable transdir "/user/blabla/sc_trans"
    variable configfile "asdasd.conf"
    variable internchan "#channel"
    


    
    #Ist der Transcoder an?
    #Return: 1 wenn Transcoder gefunden wurde 0 wenn nicht.
    proc running {} {
        variable transdir
        variable configfile
        variable transcodername        
        set result [exec "ps" x -o "%c"]
        foreach line [split $result \n] {
            if { [string equal -nocase "$transcodername" $line] } {
                return 1
            }
        }
        return 0
    }
    
    #Wenn der Transcoder an sein sollte gib mir die PID zurück.
    #Return: pid wenn Transcoder an ist und gefunden wurde, ansonsten -1.
    proc sc:pid {} {
        variable transdir
        variable configfile
        variable transcodername        
        if { [running] } {
            set result [exec "ps" x -o "%c : %p"]
            foreach line [split $result \n] {
                foreach {cmd pid} [split [string map {" " ""} $line] :] {
                    if { [string equal -nocase $transcodername $cmd] } {
                        return $pid
                    }
                }
            }
        }
        return -1
    }
    
    #Kill den Transcoder.
    #Return: Gibt 1 zurück wenn der Transcoder aus ist ansonsten 0.
    proc kill {} {
        variable transdir
        variable configfile
        variable transcodername        
        variable pipe
        if { [set pid [sc:pid]] != -1 } {
            set result [exec killall -9 $transcodername]
            if {$result == ""} {
                catch {close $pipe}
                return 1
            }
        }
        return 0
    }
    
    #Erstellt ein pipe mittels open um den Transcoder zu starten.
    #Return: Gibt bei Erfolg 1 zurück ansonsten 0
    proc start {} {
        variable transdir
        variable configfile
        variable transcodername
        variable pipe
        if { ![running] } {
            set dir [pwd]
            cd $transdir
            catch {close $pipe}
            if { ![catch {set pipe [open "| ./$transcodername $configfile" r+]} error] } {
                fconfigure $pipe -blocking 0 -buffering none
                if { [running] } {
                    #fileevent $pipe readable 
[list [namespace current]::file:event]
                    cd $dir
                    return 1
                }
            }
        }
        if { [info exists dir] } { cd $dir }
        catch {close $pipe}
        return 0
    }
    
    #Restart vom Transcoder.
    #Return: Gibt nichts zurück, sendet aber automatisch Nachrichten an den internen Channel.
    proc restart {} {
        
        variable pipe
        if { [running] } {
            putserv "PRIVMSG $internchan :Playlist wird neugestartet."
            if { [kill] } {
                if { [start] } {
                    putserv "PRIVMSG $internchan :Playlist gestartet."
                } else {
                    putserv "PRIVMSG $internchan :Es ist ein Fehler beim starten aufgetretten."
                }
            } else {
                putserv "PRIVMSG $internchan :Konnte den Transcoder nicht beenden."
            }
        }
    }
}
 
#3
Hi Toushirou,

danke dir, werde es mal austesten.

Er scheint mit der ersten Zeile nicht klar zu kommen

|31/03/13| • 23:57:02 <RetterBote> [23:57:05] Tcl error in file 'eggdrop.conf':
|31/03/13| • 23:57:02 <RetterBote> [23:57:05] missing close-brace
|31/03/13| • 23:57:02 <RetterBote> while executing
|31/03/13| • 23:57:02 <RetterBote> "namespace eval transcoder {
|31/03/13| • 23:57:02 <RetterBote> variable pid ""
|31/03/13| • 23:57:02 <RetterBote> variable transcodername "sc_trans"
|31/03/13| • 23:57:02 <RetterBote> variable transdir "/var/www/web0/html/webtrans/sc_trans"
|31/03/13| • 23:57:02 <RetterBote> ..."
|31/03/13| • 23:57:02 <RetterBote> (file "scripts/pk_an_aus.tcl" line 1)
|31/03/13| • 23:57:02 <RetterBote> invoked from within
|31/03/13| • 23:57:02 <RetterBote> "source scripts/pk_an_aus.tcl"
|31/03/13| • 23:57:02 <RetterBote> (file "eggdrop.conf" line 1392)
|31/03/13| • 23:57:02 <RetterBote> [23:57:05] * KONFIGURATIONSDATEI NICHT GELADEN (NICHT GEFUNDEN ODER FEHLER)

An dem bind und proc bin ich gerade bei
 
Zuletzt bearbeitet:
#4
ich habe mal das mit der pipe ganz raus genommen schau mal ob das geht
Code:
namespace eval transcoder {

    variable pid ""
    variable transcodername "sc_trans"
    variable transdir "/user/blabla/sc_trans"
    variable configfile "asdasd.conf"
    variable internchan "#channel"
    


    
    #Ist der Transcoder an?
    #Return: 1 wenn Transcoder gefunden wurde 0 wenn nicht.
    proc running {} {
        variable transdir
        variable configfile
        variable transcodername        
        set result [exec "ps" x -o "%c"]
        foreach line [split $result \n] {
            if { [string equal -nocase "$transcodername" $line] } {
                return 1
            }
        }
        return 0
    }
    
    #Wenn der Transcoder an sein sollte gib mir die PID zurück.
    #Return: pid wenn Transcoder an ist und gefunden wurde, ansonsten -1.
    proc sc:pid {} {
        variable transdir
        variable configfile
        variable transcodername        
        if { [running] } {
            set result [exec "ps" x -o "%c : %p"]
            foreach line [split $result \n] {
                foreach {cmd pid} [split [string map {" " ""} $line] :] {
                    if { [string equal -nocase $transcodername $cmd] } {
                        return $pid
                    }
                }
            }
        }
        return -1
    }
    
    #Kill den Transcoder.
    #Return: Gibt 1 zurück wenn der Transcoder aus ist ansonsten 0.
    proc kill {} {
        variable transdir
        variable configfile
        variable transcodername        
        variable pipe
        if { [set pid [sc:pid]] != -1 } {
            set result [exec killall -9 $transcodername]
            if {$result == ""} {
                catch {close $pipe}
                return 1
            }
        }
        return 0
    }
    
    #Erstellt ein pipe mittels open um den Transcoder zu starten.
    #Return: Gibt bei Erfolg 1 zurück ansonsten 0
    proc start {} {
        variable transdir
        variable configfile
        variable transcodername
        variable pipe
        if { ![running] } {
            set dir [pwd]
            cd $transdir
            catch {close $pipe}
            if { ![catch {set pipe [open "| ./$transcodername $configfile" r+]} error] } {
                fconfigure $pipe -blocking 0 -buffering none
                if { [running] } {
                    cd $dir
                    return 1
                }
            }
        }
        if { [info exists dir] } { cd $dir }
        catch {close $pipe}
        return 0
    }
    
    #Restart vom Transcoder.
    #Return: Gibt nichts zurück, sendet aber automatisch Nachrichten an den internen Channel.
    proc restart {} {
        
        variable pipe
        if { [running] } {
            putserv "PRIVMSG $internchan :Playlist wird neugestartet."
            if { [kill] } {
                if { [start] } {
                    putserv "PRIVMSG $internchan :Playlist gestartet."
                } else {
                    putserv "PRIVMSG $internchan :Es ist ein Fehler beim starten aufgetretten."
                }
            } else {
                putserv "PRIVMSG $internchan :Konnte den Transcoder nicht beenden."
            }
        }
    }
}
 

Tappi112

Active Member
#5
Also, ich habe das erste noch mal umgeändert gehabt, aber gleiche Meldung.
Dann habe ich das andere genommen ohne dem Pipe .... kommt aber auch die selbe Meldung

Code:
namespace eval transcoder {

    variable pid ""
    variable transcodername "sc_trans"
    variable transdir "/var/www/web0/html/webtrans/sc_trans"
    variable configfile "sc_trans.conf"
    variable internchan "#retter-team" 
    
    bind pub -|- !pk start
    bind pub -|- !pk stop 


    
    #Ist der Transcoder an?
    #Return: 1 wenn Transcoder gefunden wurde 0 wenn nicht.
    proc running {} {
        variable transdir
        variable configfile
        variable transcodername        
        set result [exec "ps" x -o "%c"]
        foreach line [split $result \n] {
            if { [string equal -nocase "$transcodername" $line] } {
                return 1
            }
        }
        return 0
    }
    
    #Wenn der Transcoder an sein sollte gib mir die PID zurück.
    #Return: pid wenn Transcoder an ist und gefunden wurde, ansonsten -1.
    proc sc:pid {} {
        variable transdir
        variable configfile
        variable transcodername        
        if { [running] } {
            set result [exec "ps" x -o "%c : %p"]
            foreach line [split $result \n] {
                foreach {cmd pid} [split [string map {" " ""} $line] :] {
                    if { [string equal -nocase $transcodername $cmd] } {
                        return $pid
                    }
                }
            }
        }
        return -1
    }
    
    #Kill den Transcoder.
    #Return: Gibt 1 zurück wenn der Transcoder aus ist ansonsten 0.
    proc pk stop {} {
        variable transdir
        variable configfile
        variable transcodername        
        variable pipe
        if { [set pid [sc:pid]] != -1 } {
            set result [exec killall -9 $transcodername]
            if {$result == ""} {
                catch {close $pipe}
                return 1
            }
        }
        return 0
    }
    
    #Erstellt ein pipe mittels open um den Transcoder zu starten.
    #Return: Gibt bei Erfolg 1 zurück ansonsten 0
    proc pk start {} {
        variable transdir
        variable configfile
        variable transcodername
        variable pipe
        if { ![running] } {
            set dir [pwd]
            cd $transdir
            catch {close $pipe}
            if { ![catch {set pipe [open "| ./$transcodername $configfile" r+]} error] } {
                fconfigure $pipe -blocking 0 -buffering none
                if { [running] } {
                    cd $dir
                    return 1
                }
            }
        }
        if { [info exists dir] } { cd $dir }
        catch {close $pipe}
        return 0
    }
    
    #Restart vom Transcoder.
    #Return: Gibt nichts zurück, sendet aber automatisch Nachrichten an den internen Channel.
    proc restart {} {
        
        variable pipe
        if { [running] } {
            putserv "PRIVMSG $internchan :Plattenkiste wird neugestartet."
            if { [kill] } {
                if { [start] } {
                    putserv "PRIVMSG $internchan :Plattenkiste gestartet."
                } else {
                    putserv "PRIVMSG $internchan :Es ist ein Fehler beim starten aufgetretten."
                }
            } else {
                putserv "PRIVMSG $internchan :Konnte die Plattenkiste nicht beenden."
            }
        }
    }
}

Selbst das bind habe ich verschieden benutzt

bind pub -|- !pk start
bind pub -|- !pk stop

bind pub -|- !pk ::transcoder::start
bind pub -|- !pk ::transcoder::stop

bind pub -|- !pk transcoder::start
bind pub -|- !pk transcoder::stop

Bei den bind pub -|- !pk ::transcoder::start sowie beim bind pub -|- !pk transcoder::start geschah nichts, nur TCL Errormeldungen

Tcl error [stop]: invalid command name "stop"

Tcl error [:transcoder:stop]: invalid command name ":transcoder:stop"

Tcl error [::transcoder::stop]: wrong # args: should be "::transcoder::stop"

Wobei diesem Meldungen kamen, weil er es nicht finden konnte, das habe ich dann verstanden und habe aus dem proc start .... ein proc pk start bzw. stop gemacht .... aber dann schmiert alles ab

Achja hier noch eine Meldung aus der Shell

[22:50:19] Tcl error in file 'eggdrop.conf':
[22:50:19] wrong # args: should be "proc name args body"
while executing
"proc pk stop {} {
variable transdir
variable configfile
variable transcodername
variable pipe
if { [se..."
(in namespace eval "::transcoder" script line 50)
invoked from within
"namespace eval transcoder {

variable pid ""
variable transcodername "sc_trans"
variable transdir "/var/www/web0/html/webtrans/sc_trans"
..."
(file "scripts/pk_an_aus2.tcl" line 1)
invoked from within
"source scripts/pk_an_aus2.tcl"
(file "eggdrop.conf" line 1393)
[22:50:19] * KONFIGURATIONSDATEI NICHT GELADEN (NICHT GEFUNDEN ODER FEHLER)



Ich tüftel mal weiter .... wär doch gelacht wenn ich das nicht hinbekomme

Edit:

Irgendwie klappt es nicht mit dem bind pub proc

[23:20:46] Tcl error in file 'eggdrop.conf':
[23:20:46] wrong # args: should be "bind type flags cmd/mask ?procname?"
while executing
"bind pub - !pk stop pkstop"
(in namespace eval "::transcoder" script line 46)
invoked from within
"namespace eval transcoder {

variable pid ""
variable transcodername "sc_trans"
variable transdir "/var/www/web0/html/webtrans/sc_trans"
..."
(file "scripts/pk_an_aus2.tcl" line 1)
invoked from within
"source scripts/pk_an_aus2.tcl"
(file "eggdrop.conf" line 1393)
[23:20:46] * KONFIGURATIONSDATEI NICHT GELADEN (NICHT GEFUNDEN ODER FEHLER)



Code:
#Kill den Transcoder.
    #Return: Gibt 1 zurück wenn der Transcoder aus ist ansonsten 0.
    bind pub - !pk stop pkstop
    proc pkstop {} {
!pk stop geändert zu !pkstop und ich konnte den Eggdrop wieder starten ... nur bekomme ich jetzt wieder ein TCL Error

|01/04/13| • 23:24:18 <*Tappi|Hg> !pkstop
|01/04/13| • 23:24:29 <*Tappi|Hg> [23:24:22] Tcl error [pkstop]: invalid command name "pkstop"

Jetzt noch mal mit dem trancoder gespielt

|01/04/13| • 23:33:45 <RetterBote> [23:33:49] Tcl error in file 'eggdrop.conf':
|01/04/13| • 23:33:45 <RetterBote> [23:33:49] can't create procedure "transcoder::stop": unknown namespace
|01/04/13| • 23:33:45 <RetterBote> while executing
|01/04/13| • 23:33:45 <RetterBote> "proc transcoder::stop {} {
|01/04/13| • 23:33:45 <RetterBote> variable transdir
|01/04/13| • 23:33:45 <RetterBote> variable configfile
|01/04/13| • 23:33:45 <RetterBote> variable transcodername
|01/04/13| • 23:33:45 <RetterBote> variable pipe
|01/04/13| • 23:33:45 <RetterBote> ..."
|01/04/13| • 23:33:45 <RetterBote> (in namespace eval "::transcoder" script line 47)
|01/04/13| • 23:33:45 <RetterBote> invoked from within
|01/04/13| • 23:33:45 <RetterBote> "namespace eval transcoder {
|01/04/13| • 23:33:45 <RetterBote> variable pid ""
|01/04/13| • 23:33:45 <RetterBote> variable transcodername "sc_trans"
|01/04/13| • 23:33:45 <RetterBote> variable transdir "/var/www/web0/html/webtrans/sc_trans"
|01/04/13| • 23:33:45 <RetterBote> ..."
|01/04/13| • 23:33:45 <RetterBote> (file "scripts
|01/04/13| • 23:33:45 <RetterBote> [23:33:49] * KONFIGURATIONSDATEI NICHT GELADEN (NICHT GEFUNDEN ODER FEHLER)
 
Zuletzt bearbeitet:

Tappi112

Active Member
#6
Hmm also ich hab echt keine Idee mehr wie ich das bind da noch eingeben kann/soll/muss

Das Proc steht ja schon drin

In der Partyline kam

Tcl error [transcoder::start]: wrong # args: should be "transcoder::start"

Code:
namespace eval transcoder {

    variable pid ""
    variable transcodername "sc_trans"
    variable transdir "/var/www/web0/html/webtrans/sc_trans"
    variable configfile "sc_trans.conf"
    variable internchan "#retter-team"

    bind pub -|- !stop transcoder::start
    bind pub -|- !start transcoder::stop
    bind pub -|- !restart transcoder::stop 

    
    #Ist der Transcoder an?
    #Return: 1 wenn Transcoder gefunden wurde 0 wenn nicht.
    proc running {} {
        variable transdir
        variable configfile
        variable transcodername        
        set result [exec "ps" x -o "%c"]
        foreach line [split $result \n] {
            if { [string equal -nocase "$transcodername" $line] } {
                return 1
            }
        }
        return 0
    }
    
    #Wenn der Transcoder an sein sollte gib mir die PID zurück.
    #Return: pid wenn Transcoder an ist und gefunden wurde, ansonsten -1.
    proc sc:pid {} {
        variable transdir
        variable configfile
        variable transcodername        
        if { [running] } {
            set result [exec "ps" x -o "%c : %p"]
            foreach line [split $result \n] {
                foreach {cmd pid} [split [string map {" " ""} $line] :] {
                    if { [string equal -nocase $transcodername $cmd] } {
                        return $pid
                    }
                }
            }
        }
        return -1
    }
    
    #Kill den Transcoder.
    #Return: Gibt 1 zurück wenn der Transcoder aus ist ansonsten 0.
    proc stop {} {
        variable transdir
        variable configfile
        variable transcodername        
        variable pipe
        if { [set pid [sc:pid]] != -1 } {
            set result [exec killall -9 $transcodername]
            if {$result == ""} {
                catch {close $pipe}
                return 1
            }
        }
        return 0
    }
    
    #Erstellt ein pipe mittels open um den Transcoder zu starten.
    #Return: Gibt bei Erfolg 1 zurück ansonsten 0
    proc start {} {
        variable transdir
        variable configfile
        variable transcodername
        variable pipe
        if { ![running] } {
            set dir [pwd]
            cd $transdir
            catch {close $pipe}
            if { ![catch {set pipe [open "| ./$transcodername $configfile" r+]} error] } {
                fconfigure $pipe -blocking 0 -buffering none
                if { [running] } {
                    #fileevent $pipe readable 

[list [namespace current]::file:event]
                    cd $dir
                    return 1
                }
            }
        }
        if { [info exists dir] } { cd $dir }
        catch {close $pipe}
        return 0
    }
    
    #Restart vom Transcoder.
    #Return: Gibt nichts zurück, sendet aber automatisch Nachrichten an den internen Channel.
    proc restart {} {
        
        variable pipe
        if { [running] } {
            putserv "PRIVMSG $internchan :Plattenkiste wird neugestartet."
            if { [kill] } {
                if { [start] } {
                    putserv "PRIVMSG $internchan :Plattenkiste gestartet."
                } else {
                    putserv "PRIVMSG $internchan :Es ist ein Fehler beim starten aufgetretten."
                }
            } else {
                putserv "PRIVMSG $internchan :Konnte die Plattenkiste nicht beenden."
            }
        }
    }
}
 
#7
ich kann mir gerade keinen überblick verschaffen weil es eine stressige woche ist :p ich kann mir erst samstag einen überblick verschaffen.

allerdings kann ich dir bei der meldung
Tcl error [::transcoder::stop]: wrong # args: should be "::transcoder::stop"
schon einmal helfen.

die meldung sagt dir nichts anderes das die proc einfach nur ohne parameter aufgerufen wird.
wenn du allerdings bind pub -|- "!stop" ::transcoder::stop schreibst fügt eggdrop intern noch parameter hinzu.
die proc wird dann so aufgerufen:
Code:
::transcoder::stop <nickname> <user@host> <eggdropHandle> <channel> <text>
es gibt die möglichkeit das man andere procs drumrum baut oder einfach anstelle von {} ein {args} macht dann ist es egal wie viele parameter übergeben werden.
 

Tappi112

Active Member
#8
Hi Toushirou,

also verstehe ich das richtig, das es dann so aussehen muss: bind pub -|- "!stop" ..... ohne dem :transcoder::stop ?

Denn im proc habe ich es ja entsprechend abgeändert, wenn man !stop eingibt, was ja mit der Zeile angegeben ist:

bind pub -|- !stop

Und dann kommt ja schon die proc:

#Kill den Transcoder. #Return: Gibt 1 zurück wenn der Transcoder aus ist ansonsten 0. proc stop {} {

Nur das habe ich ja jetzt schon alles versucht und getestet....

Oder muss ich das bind pub -|- !stop direkt über die proc Zeile schreiben? Wobei *kopfkratz* ich meine das ich das auch schon getestet hatte.

:confused:
 
#9
hi,
nein du hast es falsch verstanden.

ein bind übergibt der proc immer parameter, bei bind pub ist es der username, userhost, handle, channel und text.
die proc transcoder::kill erwartet allerdings keine parameter.
es gibt zwei möglichkeiten das zu ändern; man passt die signatur der proc an oder man schreibt sich eine proc drum rum die einfach die procs aufrufen.

beide möglichkeiten habe ich dir mal zusammengesetzt:
http://paste.tclhelp.net/?id=d4r (will den thread nicht fluten :D).

bei möglichkeit 2 siehst du unten das dort eine proc transcoder::bind hinzugefügt wird die je nach aufruf ("!transcoder <cmd>") handelt.
man könnte natürlich nun die rückgabewerte abfangen und sowas aber man kann es auch lassen :D
 
#10
Ah mensch da war ich ja vollkommen auf dem Holzweg, aber naja nur so lernt man es ...
Was mir aber auch noch aufgefallen ist, das ich in der Shell den sc_trans mit Root starte bzw. stope ... also müsste ich dem Eggdrop noch sagen, das er sich zum root machen muss und dann erst den Befehl ausführen .....
Weil aktuell führt bzw. versucht er es ja als User Eggdrop ... richtig?
Wenn dem so ist, da habe ich aber noch einen Code ... werde mal die Tage rumtesten

Danke dir erstmal :)
 
#11
Ah mensch da war ich ja vollkommen auf dem Holzweg, aber naja nur so lernt man es ...
Was mir aber auch noch aufgefallen ist, das ich in der Shell den sc_trans mit Root starte bzw. stope ... also müsste ich dem Eggdrop noch sagen, das er sich zum root machen muss und dann erst den Befehl ausführen .....
Weil aktuell führt bzw. versucht er es ja als User Eggdrop ... richtig?
Wenn dem so ist, da habe ich aber noch einen Code ... werde mal die Tage rumtesten

Danke dir erstmal :)
iirc lässt sich eggdrop nicht als root starten und das wäre auch nicht zu empfehlen.
wir hatten das damals so gelöst das der eggdrop user die nötigen rechte kriegte um die dateien zu lesen, erstellen und auch auszuführen.
allerdings war der eggdrop nur im internen channel und nicht im öffentlichen channel.
 
#12
Hi Toushi

früher hatten wir etwas ähnliches, da machte sich den Eggdrop irgendwie zum root?

Code:
#exec /home/streams/plattenkiste/plattenkiste_stop > /dev/null &
#exec sudo -u streams /home/streams/plattenkiste/plattenkiste_stop > /dev/null &
 exec sudo -u root /home/streams/plattenkiste/plattenkiste_stop > /dev/null &
die Plattenkiste damals war ebenfalls ein sc_trans 040

Aber wie das ging und was da war und so ..... ???

Edit: allerdings müsste der sc_trans ja auch unter einem User eingebaut worden sein? Das wurde uns installiert, sonst wüßte ich das *g*
Ich schau mal ob ich das irgendwie rausbekomme, weil dann wäre es ja einfacher

Ist das alles kompliziert

Nochmal edit: Also habe gerade geschaut, sc_trans mit der webtrans Oberfläche (welche nicht richtig funktioniert) ist bei einem User drin. Also, sollte es machbar sein, den auch als User zu starten bzw. zu stopen
 
Oben