Raspberry Pi - MFBot Konsolenversion

Benutzeravatar
Robin
Administrator
Beiträge: 1723
Registriert: So 30. Jun 2013, 18:12
Wohnort: Rheinland-Pfalz
Hat sich bedankt: 303 Mal
Danksagung erhalten: 354 Mal

Re: Raspberry Pi - MFBot Konsolenversion

Beitrag von Robin »

Hallo Meruem,

tatsächlich war im Hintergrund durch eine Anpassung an IPv6 unser Schnittstellenserver intern nicht mehr ordentlich erreichbar.
Dieser Fehler ist jetzt behoben, daher sollte auch der Weg über /latest/ wieder funktionieren.

Grüße
Robin
MFBot-VersionCode-Zeilen*In Dateien*Letzte Version
MFBot 1.5.x64851Juli 2013
MFBot 2.x1436316März 2014
MFBot 3.x2209536März 2015
MFBot 4.x55242241Juli 2018
MFBot 5.x66000440Tbc
*Ohne automatisch generierten Designer-Code
Betzabua
Beiträge: 4
Registriert: Do 20. Jun 2019, 19:56
Hat sich bedankt: 0
Danksagung erhalten: 1 Mal

Re: Raspberry Pi - MFBot Konsolenversion

Beitrag von Betzabua »

Robin hat geschrieben: Sa 28. Mär 2020, 00:09 Hi Betzabua,
siehe dazu hier: viewtopic.php?f=20&t=1391&start=80#p13523

Der Fehler sollte laut dem dazugehörigen Issue mit Mono 5.12 gelöst worden sein, wenn er das nicht ist, ist entweder deine Mono-Version zu alt (ausgehend von Debian Buster / dem neuesten Raspbian dürfte das nicht der Fall sein) oder das Problem ist eventuell doch ein anderes.
So oder so sollte der verlinkte Workaround funktionieren.

Grüße
Robin
Hallo Robin,

danke, der Workaround hat geklappt, hab so einen Post gesucht, aber irgendwie überlesen ^^

Mono ist das aktuellste installiert (das sagt zumindest auch der Rasp...)

es funktioniert derweil alles, behalte das ganze mal im Auge und melde mich, wenn es wieder Neuigkeiten gibt ;)

Grüße

Manuel
Folgende Benutzer bedankten sich beim Autor Betzabua für den Beitrag:
Robin (Mo 6. Apr 2020, 14:21)
Enno1337
Beiträge: 10
Registriert: Fr 6. Dez 2019, 15:51
Hat sich bedankt: 0
Danksagung erhalten: 0

Re: Raspberry Pi - MFBot Konsolenversion

Beitrag von Enno1337 »

hallo,
wenn ich den bot nach der neuen anleitung installieren will,
komme ich bis zu dem punkt wo ich .mfbot init ausführen will

pi@raspberrypi:~/bot $ ./mfbot init
bash: ./mfbot: Datei oder Verzeichnis nicht gefunden



hab den pfad in der mfbot.sh datei angepast etc
bekomme den bot quasi nicht runtergeladen oder sonst was

kannst mir da helfen>

mfg
F0restbear
Moderator
Beiträge: 1139
Registriert: Mo 8. Jun 2015, 17:36
Hat sich bedankt: 39 Mal
Danksagung erhalten: 214 Mal

Re: Raspberry Pi - MFBot Konsolenversion

Beitrag von F0restbear »

Huhu,

dürfte ich fragen, nach welcher neuen Anleitung?
Viele Grüße / Best regards

F0restbear
Enno1337
Beiträge: 10
Registriert: Fr 6. Dez 2019, 15:51
Hat sich bedankt: 0
Danksagung erhalten: 0

Re: Raspberry Pi - MFBot Konsolenversion

Beitrag von Enno1337 »

moin,
nach der neuen anleitung

habe es wieder nach der alten gemacht.. klappt wunderbar
nur das mit dem updaten bekomme ich da net hin
kommt immer datei nichht gefunden oder sowas deswegen muss ich den immer fix neu aufsetzen :D
UnknownDeveloper
Core Developer
Beiträge: 407
Registriert: Sa 19. Mai 2018, 15:59
Hat sich bedankt: 22 Mal
Danksagung erhalten: 86 Mal

Re: Raspberry Pi - MFBot Konsolenversion

Beitrag von UnknownDeveloper »

Moin Enno,

es würde uns freuen, wenn du uns den Link zu der "Neuen" Anleitung senden könntest.

Vielen Dank
Enno1337
Beiträge: 10
Registriert: Fr 6. Dez 2019, 15:51
Hat sich bedankt: 0
Danksagung erhalten: 0

Re: Raspberry Pi - MFBot Konsolenversion

Beitrag von Enno1337 »

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/UrtNZCj7 -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           :20200323
#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 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 update
Alle Befehle anzeigen lassen: ./mfbot 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.

der hier von seite 6
xJhonny
Beiträge: 8
Registriert: Mo 18. Feb 2019, 13:46
Hat sich bedankt: 1 Mal
Danksagung erhalten: 5 Mal

Re: Raspberry Pi - MFBot Konsolenversion

Beitrag von xJhonny »

Enno1337 hat geschrieben: So 12. Apr 2020, 05:15 hallo,
wenn ich den bot nach der neuen anleitung installieren will,
komme ich bis zu dem punkt wo ich .mfbot init ausführen will

pi@raspberrypi:~/bot $ ./mfbot init
bash: ./mfbot: Datei oder Verzeichnis nicht gefunden



hab den pfad in der mfbot.sh datei angepast etc
bekomme den bot quasi nicht runtergeladen oder sonst was

kannst mir da helfen>

mfg
Halle Enno1337,
durch deinen Post habe ich bemerkt, dass in der Erklärung ein paar Tippfehler vorkommen. Es sollte "./mfbot.sh init" heißen. Die endung der Datei hat gefehlt, werde nochmal über die Anleitung schauen und die Fehler beheben.
Grüße xJhonny
Szpilman
Beiträge: 1
Registriert: Di 19. Mai 2020, 21:34
Hat sich bedankt: 0
Danksagung erhalten: 0

Re: Raspberry Pi - MFBot Konsolenversion

Beitrag von Szpilman »

Hallo zusammen:

Zunächst einmal herzlichen Dank für all die Arbeit und Mühe, die hinter diesem Projekt steckt. Echt super! Auf meinem Windows-PC läuft die Sache wunderbar.

Nun zu meinem Anliegen: Hab seit ein paar Tagen eine Raspberry Pi 2 und arbeite mich langsam ein, den Bot darauf zu installieren. Ich habe die Installationsanleitung von xJhonny (zuletzt geändert am Do 23. Apr 2020) abgearbeitet. Mehrfach. Trotzdem erhalte ich, wenn ich ./mfbot.sh init eingebe (oder auch ... start/update etc.) folgende Meldung:

/bin/bash: - : Ungültige Option
Aufruf: /bin/bash [Lange GNU Option] [Option] ...
/bin/bash [Lange GNU Option] [Option] Script-Datei ...
Lange GNU Optionen:
--debug
--debugger
--dump-po-strings
--dump-strings
--help
--init-file
--login
--noediting
--noprofile
--norc
--posix
--pretty-print
--rcfile
--restricted
--verbose
--version
Shell-Optionen:
-ilrsD oder -c Kommando oder -O shopt_option (Nur Aufruf)
-abefhkmnptuvxBCHP oder Option -o

Und damit kann ich irgendwie nicht arbeiten.
Könnt ihr mir sagen, woran das liegen könnte?
Ich bin ein aboluter Neuling und habe dementsprechend keine Ahnung, wo ich den Fehler suchen sollte.

Liebe Grüße,
Szpilman
xJhonny
Beiträge: 8
Registriert: Mo 18. Feb 2019, 13:46
Hat sich bedankt: 1 Mal
Danksagung erhalten: 5 Mal

Re: Raspberry Pi - MFBot Konsolenversion

Beitrag von xJhonny »

Szpilman hat geschrieben: Di 19. Mai 2020, 21:47 Hallo zusammen:

Zunächst einmal herzlichen Dank für all die Arbeit und Mühe, die hinter diesem Projekt steckt. Echt super! Auf meinem Windows-PC läuft die Sache wunderbar.

Nun zu meinem Anliegen: Hab seit ein paar Tagen eine Raspberry Pi 2 und arbeite mich langsam ein, den Bot darauf zu installieren. Ich habe die Installationsanleitung von xJhonny (zuletzt geändert am Do 23. Apr 2020) abgearbeitet. Mehrfach. Trotzdem erhalte ich, wenn ich ./mfbot.sh init eingebe (oder auch ... start/update etc.) folgende Meldung:

/bin/bash: - : Ungültige Option
Aufruf: /bin/bash [Lange GNU Option] [Option] ...
/bin/bash [Lange GNU Option] [Option] Script-Datei ...
Lange GNU Optionen:
--debug
--debugger
--dump-po-strings
--dump-strings
--help
--init-file
--login
--noediting
--noprofile
--norc
--posix
--pretty-print
--rcfile
--restricted
--verbose
--version
Shell-Optionen:
-ilrsD oder -c Kommando oder -O shopt_option (Nur Aufruf)
-abefhkmnptuvxBCHP oder Option -o

Und damit kann ich irgendwie nicht arbeiten.
Könnt ihr mir sagen, woran das liegen könnte?
Ich bin ein aboluter Neuling und habe dementsprechend keine Ahnung, wo ich den Fehler suchen sollte.

Liebe Grüße,
Szpilman
Ändere die erste Zeile im Script zu

Code: Alles auswählen

#!/bin/bash
habe es jetzt auch in der Anleitung angepasst.
Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 6 Gäste