Raspberry Pi - MFBot Konsolenversion

Radi
Beiträge: 53
Registriert: Mi 17. Jun 2020, 21:53
Hat sich bedankt: 14 Mal
Danksagung erhalten: 8 Mal

Re: Raspberry Pi - MFBot Konsolenversion

Beitrag von Radi »

TakeViagraDieHard hat geschrieben: Di 7. Jul 2020, 22:06 Im Grunde prüft das nicht der cron-job selbst, sondern das Skript das zur jeder vollen fünften Minute aufgerufen wird.
sieht man das eig. in der Konsole ? das er das unüberprüft ? oder ist das eher so im Background? :)
Benutzeravatar
TakeViagraDieHard
Spender
Beiträge: 133
Registriert: Fr 29. Jun 2018, 21:53
Wohnort: NRW
Hat sich bedankt: 13 Mal
Danksagung erhalten: 43 Mal

Re: Raspberry Pi - MFBot Konsolenversion

Beitrag von TakeViagraDieHard »

Man kann das natürlich in ne Datei loggen, aber diese Datei wird dann elend groß und einen Mehrwert hat das nicht wirklich. Ich mache das schon gut 2 Jahre so und hatte da nie ein Problem mit.
Folgende Benutzer bedankten sich beim Autor TakeViagraDieHard für den Beitrag:
Radi (Do 9. Jul 2020, 19:02)
supm3n
Beiträge: 1
Registriert: Di 18. Aug 2020, 12:33
Hat sich bedankt: 0
Danksagung erhalten: 0

Re: Raspberry Pi - MFBot Konsolenversion

Beitrag von supm3n »

Hello,
does this script work for multiple characters? I have two in the acc.ini yet it only works on one. Is it intended to work like that? Thank you
Radi
Beiträge: 53
Registriert: Mi 17. Jun 2020, 21:53
Hat sich bedankt: 14 Mal
Danksagung erhalten: 8 Mal

Re: Raspberry Pi - MFBot Konsolenversion

Beitrag von Radi »

supm3n hat geschrieben: Di 18. Aug 2020, 12:41 Hello,
does this script work for multiple characters? I have two in the acc.ini yet it only works on one. Is it intended to work like that? Thank you
the second one got auto start ? .. in the ini.acc ?
u must able auto Start , that every chara in the ini.acc works :)


i got 10 chara's and every character works fine :)
1NicerDude
Beiträge: 4
Registriert: Di 13. Feb 2018, 15:05
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal

Re: Raspberry Pi - MFBot Konsolenversion

Beitrag von 1NicerDude »

xJhonny hat geschrieben: Mi 6. Mär 2019, 18:14

Hallo Leute,
ich habe mal die Anleitung erneuert und zusammengefasst, sowie ein von mir erstelltes Script hinzugefügt. (Dei Anleitung und das Script sind an vorherige Posts angelehnt.)

1. RaspberryPi auf den aktuellsten Stand bringen

Code: Alles auswählen

sudo apt-get update && sudo apt-get upgrade
2. Mono Repository hinzufügen
Dazu müssen wir diese Anleitung befolgen: https://www.mono-project.com/download/s ... n-raspbian (Hier exemplarisch für Raspbian 9)

Code: Alles auswählen

sudo apt install apt-transport-https dirmngr gnupg ca-certificates
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
echo "deb https://download.mono-project.com/repo/debian stable-raspbianstretch main" | sudo tee /etc/apt/sources.list.d/mono-official-stable.list
sudo apt update
3. Mono Runtime installieren

Code: Alles auswählen

sudo apt-get install mono-runtime -y
4. Wenn der Bot auch ohne offenes Terminal laufen soll, müssen wir an dieser Stelle TMUX installieren (Ich persönlich mag Screen nicht, deshalb basiert mein Script auf TMUX)

Code: Alles auswählen

sudo apt-get install tmux -y
5. (Optional) Einen extra Botuser anlegen und zu diesem wechseln

Code: Alles auswählen

sudo adduser mfbot --gecos ""
su - mfbot
6. Bot Ordner anlegen und den Bot herunterladen

Code: Alles auswählen

mkdir bot
cd bot
wget http://www.mfbot.de/Download/latest/MFBot_Konsole_ARMRasp
7. Den Bot ausfürbar machen

Code: Alles auswählen

chmod +x MFBot_Konsole_ARMRasp
8. Das Script erstellen und ausfürbar machen

Code: Alles auswählen

nano mfbot.sh
Nun den Inhalt meines Scriptes kopieren und mit Rechtsklick in das Fenster einfügen. (Ggf. anpassen)

Code: Alles auswählen

#!/bin/bash
# Script for starting, stopping, restarting, checking and attaching mfbot

mfbot=MFBot_Konsole_ARMRasp
mfbot_dir=/home/mfbot/bot/

function start {
        if [[ $(ps -ef | grep -c $mfbot)  -ne 1 ]]; then
                echo "MFBot is already running!"
        else
                echo "Starting MFBot..."
                tmux new-session -s mfbot -d -c $mfbot_dir $mfbot_dir$mfbot
                echo "MFBot started!"
        fi
}

function stop {
        if [[ $(ps -ef | grep -c $mfbot)  -ne 1 ]]; then
                echo "Stopping MFBot..."
                tmux send-keys -t mfbot "exit" ENTER > /dev/null 2>&1
                killall -q -0 $mfbot && killall -TERM $mfbot > /dev/null 2>&1
                echo "MFBot stopped!"
        else
                echo "MFBot is already stopped!"
        fi
}

function restart {
        stop
        sleep 1
        start
}

function check {
        if [[ $(ps -ef | grep -c $mfbot)  -ne 1 ]]; then
                echo "MFBot is running!"
        else
                echo "MFBot is not runnging!"
                start
        fi
}

function attach {
        if [[ $(ps -ef | grep -c $mfbot)  -ne 1 ]]; then
                echo "Attaching MFBot session..."
                tmux attach -t mfbot
        else
                echo "MFBot wasn't running! Attaching to new session..."
                tmux new-session -A -s mfbot -c $mfbot_dir $mfbot_dir$mfbot
        fi
}

function update {
        stop
        sleep 1
        wget http://www.mfbot.de/Download/latest/MFBot_Konsole_ARMRasp -O $mfbot_dir$mfbot
        sleep 1
        start
}

case "$1" in
        start)
                start
        ;;
        stop)
                stop
        ;;
        restart)
                restart
        ;;
        check)
                check
        ;;
        attach)
                attach
        ;;
        update)
                update
        ;;
esac

exit
Mit STRG+X , Y , Enter das Script abspeichern und den Editor schließen.

Code: Alles auswählen

chmod +x mfbot.sh
9. Die Acc.ini in den Odner übertragen
Das könnt ihr z.B. mit WinSCP oder FileZilla machen.

10. (Optional) Eine cronjob anlegen, der alle 15 Minuten prüft ob der Bot läuft

Code: Alles auswählen

crontab -e
Ganz unten diese Zeile einfügen:

Code: Alles auswählen

*/15 * * * * /home/mfbot/bot/mfbot.sh check >/dev/null 2>&1
11. Die Commands
Den Bot starten: ./mfbot.sh start
Den Bot stoppen: ./mfbot.sh stop
Den Bot neustarten: ./mfbot.sh restart
Checken, ob der Bot läuft und automatisch starten falls nicht: ./mfbot.sh check
Den Bot updaten: ./mfbot update
Sich mit der TMUX Session verbinden: ./mfbot.sh attach (wenn ihr euch wieder von der Session lösen wollt: STRG+B, D)

Tipp:
Ich empfehle die Autoupdate Funktion zu deaktivieren, da sie auf dem Raspi nativ nicht funktioniert und euer Bot bei einem Neustart in einer Crash Schleife hängen bleibt. (Einfach manuell checken und händisch updaten):

Code: Alles auswählen

./mfbot.sh attach
/autoupdate off
Ich hoffe der Post war für Einige nützlich und ich konnte euch das Leben einfacher machen.

Edit 12.03.2019:
Fehler beim attach Command behoben und simplen update Command hinzugefügt.

Edit 19.03.2019:
Update Command "verbessert". Tipp ergänzt.
Hallöchen Leute,
es war nun an der Zeit meine Anleitung einmal zu überarbeiten und das Script zu verfeinern bzw. zu verbessern.

Das Script habe ich so gestaltet, dass es keine SuperUser-Rechte benötigt, deswegen müssen wir einige Dinge per Hand erledigen. Das Script nimmt uns jedoch Einiges ab.

1. RaspberryPi auf den aktuellsten Stand bringen

Code: Alles auswählen

sudo apt-get update && sudo apt-get upgrade
2. Mono Repository hinzufügen
Dazu müssen wir diese Anleitung befolgen: https://www.mono-project.com/download/s ... n-raspbian (Hier exemplarisch für Raspbian 9)

Code: Alles auswählen

sudo apt install apt-transport-https dirmngr gnupg ca-certificates
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
echo "deb https://download.mono-project.com/repo/debian stable-raspbianstretch main" | sudo tee /etc/apt/sources.list.d/mono-official-stable.list
sudo apt update
3. Mono-runtime und tmux installieren
Mono brauchen wir, um den Bot überhaupt auf dem RaspberryPi ausführen zu können und tmux, damit der Bot auch im Hintergrund, also mit geschlossenem Terminal laufen kann.

Code: Alles auswählen

sudo apt-get install mono-runtime tmux -y
4. Einen extra Botuser anlegen und zu diesem wechseln
An dieser Stelle empfehle ich für den Bot einen eigenen Benutzer auf unserem Symstem anzulegen. Ich finde es einerseits übersichtlicher und andererseits hilft es eventuell Sicherheitslücken in Programmen voneinander abzukapseln, sodass dann eventuell nur die Bot-Dateien betroffen sind und nicht noch andere. Die --gecos "" Option sorgt dafür, dass wir nicht noch weitere Informationen zum User angeben müssen.

Code: Alles auswählen

sudo adduser mfbot --gecos ""
su - mfbot
5. Bot-Ordner anlegen, das Script herunterladen und ausführbar machen.
Vorher auf jeden Fall den Inhalt des Links überprüfen!

Code: Alles auswählen

mkdir bot
cd bot
Variante 1 (Herunterladen)

Code: Alles auswählen

wget https://pastebin.com/raw/vJG0WRPc -O mfbot.sh && chmod +x mfbot.sh
Variante 2 (Manuell erstellen):

Code: Alles auswählen

nano mfbot.sh
Nun den Inhalt meines Scriptes kopieren und mit Rechtsklick in das Fenster einfügen. (Ggf. anpassen)

Code: Alles auswählen

#!/bin/bash
#title          :mfbot.sh
#description    :This script helps with the handling of the MFBot.
#author         :xJhonny
#date           :20200605
#version        :1.1
#usage          :bash mfbot.sh {start|stop|restart|attach|monitor|update|init|help}
#notes          :Install tmux and mono-runtime to use this script.
#bash_version   :5.0.3(1)-release
#==============================================================================

BOT_FILE=MFBot_Konsole_ARMRasp
BOT_DIR=/home/mfbot/bot/
BOT_DEST=$BOT_DIR$BOT_FILE
CRONJOB="*/5 * * * * ${BOT_DIR}mfbot.sh monitor >/dev/null 2>&1"

sendSlow() {
    TO_SEND=$1
    for ((i = 0 ; i < ${#TO_SEND} ; i++)); do
        tmux send-keys -l -t mfbot "${TO_SEND:$i:1}" > /dev/null 2>&1
    done
    tmux send-keys -t mfbot C-m
}

checkRunning() {
    if [[ $(pgrep -c "MFBot") -gt 0 ]]; then
        true
    else
        false
    fi
}

help() {
    echo "Usage: ./mfbot.sh {start|stop|restart|attach|monitor|update|init|help}"
}

start() {
    if checkRunning; then
        echo "$BOT_FILE is already running!"
    else
        echo "Starting $BOT_FILE ..."
        tmux new -s mfbot -d -c $BOT_DIR $BOT_DEST
        echo "$BOT_FILE started!"
    fi
}

stop() {
    if checkRunning; then
        echo "Stopping $BOT_FILE ..."
        sendSlow "exit"
        sleep 5
        if checkRunning; then
            echo "$BOT_FILE could't be stopped normally, force stopping now!"
            killall -q -w -15 $BOT_DEST > /dev/null 2>&1
            echo "$BOT_FILE force stopped!"
        else
            echo "$BOT_FILE stopped!"
        fi
    else
        echo "$BOT_FILE is not running!"
    fi
}

restart() {
    stop
    sleep 1
    start
}

attach()  {
    if checkRunning; then
        echo "Attaching to running $BOT_FILE session ..."
        sleep 1
        sh -c "tmux attach -t mfbot"
    else
        echo "$BOT_FILE is not running!"
        echo "Attaching to new $BOT_FILE session ..."
        sleep 1
        tmux new-session -A -s mfbot -c $BOT_DIR $BOT_DEST
    fi
}

monitor() {
    d=`date +%Y-%m-%d_%H_%M`
    if checkRunning; then
        echo "${d}: $BOT_FILE is running!"
    else
        echo "${d}: $BOT_FILE is not running! Restarting ..."
        start
    fi
}

update() {
    stop
    sleep 1
    wget http://www.mfbot.de/Download/latest/MFBot_Konsole_ARMRasp -O $BOT_DEST
    sleep 1
    start
}

init() {
    echo "Initializing ..."
    if [[ -f Acc.ini ]]; then
        echo "Downloading $BOT_FILE ..."
        wget -nv http://www.mfbot.de/Download/latest/MFBot_Konsole_ARMRasp -O $BOT_DEST
        chmod +x $BOT_DEST
        start
        sleep 5
        echo "Disabling autoupdate ..."
        sendSlow "autoupdate off"
        sleep 5
        stop
        echo "Install monitoring cron job?"
        select yn in "Yes" "No"; do
            case $yn in
                Yes)
                    crontab -l | { cat; echo "$CRONJOB"; } | crontab -
                    echo "Cron job installed!"
                    break
                ;;
                No)
                    echo "Cron job not installed!"
                    break
                ;;
            esac
        done
        echo "Initializing of $BOT_FILE complete! You can now start the bot."
    else
        echo "Can't find Acc.ini!"
        echo "Make sure you put you're Acc.ini in the correct directory: $BOT_DIR"
        exit
    fi
}

case "$1" in
    help)
        help
    ;;
    start)
        start
    ;;
    stop)
        stop
    ;;
    restart)
        restart
    ;;
    attach)
        attach
    ;;
    monitor)
        monitor
    ;;
    update)
        update
    ;;
    init)
        init
    ;;
    *)
        help
    ;;
esac

exit
Mit STRG+X , Y , Enter das Script abspeichern und den Editor schließen.

Code: Alles auswählen

chmod +x mfbot.sh
6. Die Acc.ini in den Odner übertragen
Das könnt ihr z.B. mit WinSCP oder FileZilla machen oder wie bei Variante 2 von Punkt 5 manuell erstellen.

Das Script ist nun bereit um für euch zu Arbeiten
Als erstes solltet ihr mit ./mfbot.sh init den eigentlichen Bot herunterladen und wichtige Einstellungen automatisch vornehmen lassen. (autoupdate deaktivieren, da es nur zu Fehlern führt)

Den Bot starten: ./mfbot.sh start
Den Bot stoppen: ./mfbot.sh stop
Den Bot neustarten: ./mfbot.sh restart
Sich mit der TMUX Session verbinden: ./mfbot.sh attach (wenn ihr euch wieder von der Session lösen wollt: STRG+B, D)
Den Bot monitoren (also prüfen ob er läuft und falls nicht neustarten): ./mfbot monitor
Den Bot updaten: ./mfbot.sh update
Alle Befehle anzeigen lassen: ./mfbot.sh help

Abschließende Worte
Ich bin kein erfahrener Bash Programmierer, deshalb verzeiht mir eventuell Fehler und weist mich am besten darauf hin, sodass ich sie schnellstmöglich beheben kann.
Beim Senden des exit bzw. autoupdate off Befehls habe ich festgestellt, dass die Buchstaben teilweise in falscher Reihenfolge ankommen, also habe ich einen Workaround geschrieben, der mit der sendSlow Funktion jeden einzelnen Buchstaben des Befehls an die Session schickt und mit einem Enter bzw. Return abschließt.
Falls ihr die Anleitung nicht 1 zu 1 befolgt, müsst ihr eigentlich nur am Anfang des Scripts die Variablen ändern, das Script sollte dann mit euren Optionen funktionieren.

Ich hoffe ich konnte weiterhelfen und das Script und die Anleitung vereinfachen die Installation und das Handling des Bots.

bekomme bei .mfbot.sh init den Fehler "bash: ./mfbot.sh: /bin/bash^M: Defekter Interpreter: Datei oder Verzeichnis nicht gefunden"
Phorkys
Beiträge: 53
Registriert: So 17. Nov 2013, 10:24
Hat sich bedankt: 12 Mal
Danksagung erhalten: 6 Mal

Re: Raspberry Pi - MFBot Konsolenversion

Beitrag von Phorkys »

Hey,

Ich hatte dasselbe Problem. Folgendes habe ich geändert. Danach lief es:

1. Habe das Skript selbst erzeugt und nicht herunter geladen.
2. Zeigte er mir einen Fehler an, wenn ich im Ordner etwas verändern möchte. Daher habe ich alles eine Ebene nach hinten geschoben. Also den Ordner in /home/pi/mfbot anstelle von /home/mfbot erzeugt. Dementsprechend habe ich auch das Skript geändert.
Danach lief es alles.
Benutzeravatar
LostSoul
Spender
Beiträge: 101
Registriert: Fr 27. Nov 2015, 17:07
Wohnort: Gotha / Thuringia
Hat sich bedankt: 205 Mal
Danksagung erhalten: 26 Mal
Kontaktdaten:

Re: Raspberry Pi - MFBot Konsolenversion

Beitrag von LostSoul »

Phorkys hat geschrieben: Sa 20. Feb 2021, 13:31Ich hatte dasselbe Problem. Folgendes habe ich geändert. danach lief es:
Um das Problem mal zu erklären bzw. das Rätsel zu lösen...
Wenn ich das Script downloaden bekomme ich einen Datei mit SH Kontext in UTF-8 und CR/LF.
Das schluckt Linux nicht und bringt eventuell folgende Fehlermeldung.
1NicerDude hat geschrieben: Fr 12. Feb 2021, 16:59 bekomme bei .mfbot.sh init den Fehler

Code: Alles auswählen

"bash: ./mfbot.sh: /bin/bash^M: Defekter Interpreter: Datei oder Verzeichnis nicht gefunden"
Ladet die Datei in Euren Lieblingseditor und wechselt von CR/LF auf LF. Datei speichern, eventuell noch ausführen freigeben und dann läuft die Datei.

Das ist der ganze Trick, die Originaldatei ist halt Windows konform.

...und wech isser...
der LostSoul
Geboren in einer stürmischen & verschneiten Nacht im April des Jahres 1972 und bis heute nicht Erwachsen geworden…
Bild
Wer ohne Sünde ist, werfe den ersten CD Player! --- Wenn ich ein Pferd wäre, hätte man mich schon längst erschossen!!!
Benutzeravatar
LostSoul
Spender
Beiträge: 101
Registriert: Fr 27. Nov 2015, 17:07
Wohnort: Gotha / Thuringia
Hat sich bedankt: 205 Mal
Danksagung erhalten: 26 Mal
Kontaktdaten:

Re: Raspberry Pi - MFBot Konsolenversion

Beitrag von LostSoul »

xJhonny hat geschrieben: Mi 6. Mär 2019, 18:14Hallo Leute,
ich habe mal die Anleitung erneuert und zusammengefasst, [...]
Ich muss Dir an dieser Stelle mal ein Kompliment für Deine Super Anleitung machen. Ist zwar OFFTOPIC aber nötig. Danke das Du es für Menschen die Linux noch nicht komplett verstanden haben gelöst hast. Die selbsterklärende .sh ist die Kirsche auf der Torte.
xJhonny hat geschrieben: Mi 6. Mär 2019, 18:14Abschließende Worte
Ich bin kein erfahrener Bash Programmierer, deshalb verzeiht mir eventuell Fehler und weist mich am besten darauf hin, sodass ich sie schnellstmöglich beheben kann.
Ich denke Du musst Dir wirklich keinen Kopf über Deine Kompetenz machen! Alles SUPER!

...und wech isser...
der LostSoul
Geboren in einer stürmischen & verschneiten Nacht im April des Jahres 1972 und bis heute nicht Erwachsen geworden…
Bild
Wer ohne Sünde ist, werfe den ersten CD Player! --- Wenn ich ein Pferd wäre, hätte man mich schon längst erschossen!!!
Gurke
Beiträge: 2
Registriert: Do 3. Feb 2022, 20:57
Hat sich bedankt: 0
Danksagung erhalten: 0

Re: Raspberry Pi - MFBot Konsolenversion

Beitrag von Gurke »

Heyho, ich hätte ein kleines problem mit meine ini datei, der bot erkennt sie nicht....

ich hab das gesamte toutorial jetzt schon 2x wiederholt und komme immer zum gleichen ergebnis:

Bild

das tritt nur sehr sehr kurz auf, die konsole returnt dannach sofort zum eigentlichen ssh konsole.

dort bekomm ich dann nur die Meldung:

Bild

meine Acc.ini hab ich exakt zu dem zeitpunkt wie es im toutorial steht dort eingefügt und nicht mehr angefasst, die ini ist die originaldatei aus meinem MfBot der auf windows läuft.
(heißt Acc.ini und wird als bak datei bezeichnet wenn das weiterhilft).

ich kenne mich zwar ein wenig mit programmierung und linux aus aber verstehe nicht wieso er sich die datei nicht zieht wenn sie doch im richtigen directory ist, habt ihr vllt irgendwelche denkanstöße woran es sonst liegen könnte?
Baaam
Core Developer
Beiträge: 893
Registriert: Mo 23. Dez 2013, 14:13
Hat sich bedankt: 165 Mal
Danksagung erhalten: 173 Mal

Re: Raspberry Pi - MFBot Konsolenversion

Beitrag von Baaam »

Gurke hat geschrieben: Mo 7. Mär 2022, 17:20 (heißt Acc.ini und wird als bak datei bezeichnet wenn das weiterhilft).
Die Acc.ini.bak ist nicht die Acc.ini, die gesucht wird. Das ist eine Backup-Datei für den Fall, dass während der aktuellen Botsession die Acc.ini aus irgendeinem Fehler zerschossen wird. Die wird automatisch vom Bot angelegt auf Basis der aktuellen Acc.ini. Das heißt du brauchst die "Acc.ini" in deinem mfbot Ordner. Die .bak kannst du ignorieren.
Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast