#!/bin/bash # Enhanced remote-admin connection script # Checks for free remote-admin PC via SMB share and launches RDP connection AMPEL_MOUNT="/tmp/remote-ampel" SHARE="//cluster-ho/Ampel" SMB_CRED="$HOME/.smbcredentials" RDP_CRED="$HOME/.remote-admin" FSTAB_ENTRY="$SHARE $AMPEL_MOUNT cifs credentials=$SMB_CRED,user,noauto,workgroup=ZFD,dir_mode=0777,file_mode=0777,_netdev 0 0" # Logging function log() { echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" } ask_permission() { read -p "$1 (y/n): " answer [[ "$answer" =~ ^[Yy]$ ]] } # Trap for cleanup cleanup() { umount "$AMPEL_MOUNT" 2>/dev/null log "Unmounted $AMPEL_MOUNT." } trap cleanup EXIT # Check for credentials if [ ! -f "$RDP_CRED" ]; then log "$RDP_CRED not found! Please create it!" exit 1 fi if [ ! -f "$SMB_CRED" ]; then log "$SMB_CRED not found! Please create it!" exit 2 fi # Source RDP credentials source "$RDP_CRED" # Detect FreeRDP FREERDP_BIN=$(command -v xfreerdp || command -v wfreerdp) if [ -z "$FREERDP_BIN" ]; then log "No FreeRDP client found (xfreerdp or wfreerdp). Please install one." exit 3 fi # Check fstab entry if ! grep -qs "$AMPEL_MOUNT" /etc/fstab; then log "Fstab entry for $AMPEL_MOUNT not found." if ask_permission "Shall I add the entry automatically?"; then sudo bash -c "echo '$FSTAB_ENTRY' >> /etc/fstab" log "Fstab entry added." fi fi # Check mount.cifs permissions if [ ! -u /usr/sbin/mount.cifs ]; then log "mount.cifs is missing setuid bit." if ask_permission "Shall I set it automatically?"; then sudo chmod u+s /usr/sbin/mount.cifs log "Setuid bit set on /usr/sbin/mount.cifs." fi fi # Mount the share mkdir -p "$AMPEL_MOUNT" if grep -qs "$AMPEL_MOUNT" /proc/mounts; then log "$AMPEL_MOUNT already mounted." else log "Mounting $AMPEL_MOUNT..." if ! mount "$AMPEL_MOUNT"; then log "Mount failed. Check share configuration." exit 4 fi log "Mount successful." fi # Search for free remote admin PC sleep 1 for i in "$AMPEL_MOUNT"/*; do [[ "$i" == *FREE* ]] || continue RDP=$(basename "$i" | cut -f1,2 -d'-') log "$RDP is free. Starting RDP session..." "$FREERDP_BIN" /u:"$USERNAME" /p:"$PASSWORD" /v:"$RDP.zfd.forumzfd.de" /dynamic-resolution log "Connection closed. Bye." exit 0 done log "No Remote-Admin is free. Try again later." exit 0