Raspberry Pi - MFBot Konsolenversion

MelanX
Beiträge: 1
Registriert: So 15. Apr 2018, 22:00
Hat sich bedankt: 0
Danksagung erhalten: 0

Re: Raspberry Pi - MFBot Konsolenversion

Beitrag von MelanX »

Hallo,

bei mir geht das mit dem automatisch Starten irgendwie nicht so ganz.

Ich habe einen Cronjob, der bei jedem Boot ausgeführt wird, weil ich meinen Pi täglich reboote. In dem Cronjob steht Folgendes*:

Code: Alles auswählen

#!/bin/bash

sudo sh /home/pi/SFBot/mfbot.sh
Die Datei /home/pi/SFBot/mfbot.sh beinhaltet Folgendes:

Code: Alles auswählen

#!/bin/bash

screen -A -m -d -S mfbot ./MFBot_Konsole_ARMRasp
Leider startet das Programm aber nicht. Wenn ich die Datei per Hand ausführe, startet der Bot jedoch und läuft ganz normal. Bis zu einem Neustart halt.
Ich habe mal den Befehl

Code: Alles auswählen

echo "DONE" >> /home/pi/SFBot/mfbot.log
mit drin stehen gehabt und neu gestartet. Die Datei hat sich erstellt und DONE geschrieben, aber der Bot wurde nicht ausgeführt. Was mache ich falsch? Habe den Pi erst vorgestern mit der neusten Version von Raspian aufgesetzt und somit ist alles auf dem aktuellsten Stand.

Wenn ich hier an der falschen Stelle nachfrage, bitte Bescheid geben und ich mach es an der richtigen Stelle :)

*jeglicher Code mit Leerzeilen an den Stellen, wo es hin gehört
Kagehide
Beiträge: 1
Registriert: Mi 3. Okt 2018, 23:29
Hat sich bedankt: 1 Mal
Danksagung erhalten: 0

Re: Raspberry Pi - MFBot Konsolenversion

Beitrag von Kagehide »

Hallo und schönen Tag!

Erstmal ein richtig fettes Dankeschön an die Entwickler dieses Top Tools!

Wie kann ich denn in der Konsolen Version den Remote Access einstellen?
Ich würde gerne über mein Netzwerk den Status des Bots überprüfen können.

MfG Kagehide
Benutzeravatar
TakeViagraDieHard
Spender
Beiträge: 140
Registriert: Fr 29. Jun 2018, 21:53
Wohnort: NRW
Hat sich bedankt: 14 Mal
Danksagung erhalten: 46 Mal

Re: Raspberry Pi - MFBot Konsolenversion

Beitrag von TakeViagraDieHard »

Gar nicht, die Einstellungen machst du in der Desktop-Version und kopierst die Acc.ini dann auf den Pi.
Dann kannst du das Webinterface installieren und kommst über den Browser dran.
Folgende Benutzer bedankten sich beim Autor TakeViagraDieHard für den Beitrag:
Kagehide (Do 4. Okt 2018, 08:14)
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 »


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.
Zuletzt geändert von xJhonny am Fr 5. Jun 2020, 16:53, insgesamt 6-mal geändert.
Folgende Benutzer bedankten sich beim Autor xJhonny für den Beitrag (Insgesamt 4):
F0restbear (Do 7. Mär 2019, 13:32) • Robin (Sa 9. Mär 2019, 10:19) • UnknownDeveloper (Sa 9. Mär 2019, 16:58) • LostSoul (Mi 28. Apr 2021, 12:19)
Diliskar
Beiträge: 7
Registriert: Mi 13. Mär 2019, 14:56
Hat sich bedankt: 1 Mal
Danksagung erhalten: 0

Re: Raspberry Pi - MFBot Konsolenversion

Beitrag von Diliskar »

Heya!
Gerade alles so gemacht wie aufgelistet, dennoch scheint der Bot nicht zu arbeiten.
Bild

Steht da, dass der Bot startet, jedoch macht er anscheinend nichts.
Gibts irgendeinen Fix bzw. woran könnte dies liegen?
Benutzeravatar
TakeViagraDieHard
Spender
Beiträge: 140
Registriert: Fr 29. Jun 2018, 21:53
Wohnort: NRW
Hat sich bedankt: 14 Mal
Danksagung erhalten: 46 Mal

Re: Raspberry Pi - MFBot Konsolenversion

Beitrag von TakeViagraDieHard »

Hast du bei den Accounts den Automatischen Login aktiviert?
Acc.ini (bei jedem Account):

Code: Alles auswählen

AUTOLOGIN=1
Folgende Benutzer bedankten sich beim Autor TakeViagraDieHard für den Beitrag (Insgesamt 2):
Diliskar (Mi 13. Mär 2019, 17:44) • xJhonny (Mi 13. Mär 2019, 18:05)
Diliskar
Beiträge: 7
Registriert: Mi 13. Mär 2019, 14:56
Hat sich bedankt: 1 Mal
Danksagung erhalten: 0

Re: Raspberry Pi - MFBot Konsolenversion

Beitrag von Diliskar »

Oh ja, tatsächlich.. hätte man selber drauf kommen können. Vielen dank :)
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 »

Alternativ möchte ich an der Stelle kurz das Kommando

Code: Alles auswählen

/start ACCOUNT@SERVER
erwähnen :-)

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
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 »

Robin hat geschrieben: Do 14. Mär 2019, 10:17 Alternativ möchte ich an der Stelle kurz das Kommando

Code: Alles auswählen

/start ACCOUNT@SERVER
erwähnen :-)

Grüße,
Robin
Oder /help :P
Folgende Benutzer bedankten sich beim Autor xJhonny für den Beitrag:
Robin (Do 14. Mär 2019, 11:46)
Rauschelbart
Beiträge: 5
Registriert: Mo 29. Apr 2019, 10:37
Hat sich bedankt: 5 Mal
Danksagung erhalten: 0

Re: Raspberry Pi - MFBot Konsolenversion

Beitrag von Rauschelbart »

TakeViagraDieHard hat geschrieben: Do 4. Okt 2018, 00:28 Gar nicht, die Einstellungen machst du in der Desktop-Version und kopierst die Acc.ini dann auf den Pi.
Dann kannst du das Webinterface installieren und kommst über den Browser dran.
Da die "Fernwartung" in den "Globalen Einstellungen" konfiguriert wird, würde dein Tipp doch nix bringen oder?

Ich war immer der Meinung das sämtliche Accounteinstellungen welche ich vornehme in der Acc.ini gespeichert werden. Und die "Globalen Einstellungen" in der bot.dat (bitte korrigieren falls ich da was durcheinander bringe). Oder etwa nicht?

Mich würde das Thema Fernwartung/Globale Einstellungen konfigurieren auf dem Raspi generell mal Interessieren. Ist es angedacht dies über den Raspi oder die GUI/Desktop Variante, mittels anschließenden verschieben der bot.dat auf den Pi, zu konfigurieren?

Grüße an die Füße
Rauschelbart
Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast