#!/bin/bash #----------------------------------------------------------- # ban / unban ip from all servers # Galaxip aka LoveBug 2020-08-14 # # checks ladder log for ban_ip and unban_ip admin commands # then sends the command to command.txt file in all servers #----------------------------------------------------------- # base location of servers change as needed serverRoot="/home/pi/armagetronad/servers/" # list of server directories change as needed serverDirectories="server00 server01 server02 server03 server04 server05 server06 server07 server08 server09 server10 server11 server12 server13" # array to store ladderlog data serverData=() # main loop read ladderlog data if available and process while read -a serverData do # first entry 0 commands we need to check command=${serverData[0]} # check command and run function case $command in #---------------- # admin commands #---------------- ADMIN_COMMAND) # get the admin command adminCommand=${serverData[4]} # get ip address for ban/unban ipAddress=${serverData[5]} # get time for ban banTime=${serverData[6]} # get ban message banMessage=${serverData[7]} # now check for ban_ip and unban_ip case $adminCommand in # ban_ip or BAN_IP ipaddress time message .. ban ip from all servers ban_ip|BAN_IP) for i in $serverDirectories do serverCommandTxt="$serverRoot$i/command.txt" printf "ban_ip %s %s %s\n" "$ipAddress" "$banTime" "$banMessage" >> "$serverCommandTxt" done # debug printf "say %s banned from all servers for %s minutes\n" "$ipAddress" "$banTime" ;; # /unban_ip or UNBAN_IP ipaddress .. unban ip from all servers unban_ip|UNBAN_IP) for i in $serverDirectories do serverCommandTxt="$serverRoot$i/command.txt" printf "unban_ip %s\n" "$ipAddress" >> "$serverCommandTxt" done # debug printf "say %s unbanned from all servers\n" "$ipAddress" ;; esac ;; esac done exit 0