Compare commits

..

No commits in common. "27441fca2f9ad7e76e1903f4b491a9359d7a191f" and "aae534cb386cbf609b55aa6793fa31c486016c1f" have entirely different histories.

2 changed files with 76 additions and 160 deletions

View file

@ -1,90 +1,29 @@
# README
## README
This repository contains some more or less usefull linux scripts. ;)
**`remote-admin.sh`**
## Remote Admin Enhanced
This script checks for the next free remote-admin pc and established a RDP session using xfreerdp to it.
To use this script you need to create two files in your home directory
This script automatically connects you to a free remote admin PC via RDP. It uses an SMB share to check availability and FreeRDP to establish the connection. The script verifies necessary system settings and assists with setup.
.smbcredentials
## Requirements
username=YOUR AD USERNAME
password=YOUR AD PASSWORD
* Bash shell
* FreeRDP (either `xfreerdp` or `wfreerdp`)
* Access to the SMB share `//cluster-ho/Ampel`
* Two configuration files:
.remote-admin
* `~/.smbcredentials` (for SMB access)
* `~/.remote-admin` (for RDP login)
USERNAME=administrator@zfd.forumzfd.de
PASSWORD=AD ADMIN PASSWORD FROM BITWARDEN
## Configuration Files
Make sure to proper chmod them (e.g. `chmod 600`)
### \~/.smbcredentials
Add the following line to your /etc/fstab and edit YOUR_USERNAME
```
username=YOUR_AD_USERNAME
password=YOUR_AD_PASSWORD
```
//cluster-ho/Ampel /tmp/remote-ampel cifs credentials=/home/YOUR_USERNAME/.smbcredentials,user,noauto,workgroup=ZFD,dir_mode=0777,file_mode=0777,_netdev 0 0
**Important:** Set secure file permissions:
setuid might be necessary on /usr/sbin/mount.cifs. Set it as root with
```bash
chmod 600 ~/.smbcredentials
```
chmod u+s /usr/sbin/mount.cifs
### \~/.remote-admin
```
USERNAME=administrator@zfd.forumzfd.de
PASSWORD=YOUR_ADMIN_PASSWORD
```
**Secure this file too:**
```bash
chmod 600 ~/.remote-admin
```
## fstab Configuration
Add the following line to `/etc/fstab` (if not already present):
```
//cluster-ho/Ampel /tmp/remote-ampel cifs credentials=/home/YOUR_USERNAME/.smbcredentials,user,noauto,workgroup=ZFD,dir_mode=0777,file_mode=0777,_netdev 0 0
```
The script can also add this line automatically (after confirmation).
## Preparing mount.cifs
To allow regular users to mount the share, `mount.cifs` must have the `setuid` bit:
```bash
sudo chmod u+s /usr/sbin/mount.cifs
```
This step is also detected by the script and can be applied automatically after confirmation.
## Usage
```bash
./remote-admin.sh
```
The script:
* checks whether all requirements are met,
* mounts the SMB share (if not already mounted),
* searches for a free remote admin PC,
* starts the RDP connection,
* and automatically unmounts the share when finished.
## Notes
* If no remote admin PC is available, the script will let you know.
* You can safely run the script multiple times.
* Users are expected to install FreeRDP themselves, if it's not already present.
---
Enjoy your remote adventures and happy adminning! ✨
Make sure you have xfreerdp installed on your computer.

145
remote-admin.sh Executable file → Normal file
View file

@ -1,92 +1,69 @@
#!/bin/bash
# Enhanced remote-admin connection script
# Checks for free remote-admin PC via SMB share and launches RDP connection
# This script checks for the next free remote-admin pc and established a RDP session using xfreerdp to it.
# To use this script you need to create two files in your home directory
#
# .smbcredentials
# username=YOUR AD USERNAME
# password=YOUR AD PASSWORD
#
# .remote-admin
# USERNAME=administrator@zfd.forumzfd.de
# PASSWORD=AD ADMIN PASSWORD FROM BITWARDEN
#
# Make sure to proper chmod them (e.g. chmod 600)
#
# Add the following line to your /etc/fstab and edit YOUR_USERNAME
#
# //cluster-ho/Ampel /tmp/remote-ampel cifs credentials=/home/YOUR_USERNAME/.smbcredentials,user,noauto,workgroup=ZFD,dir_mode=0777,file_mode=0777,_netdev 0 0
#
# setuid might be necessary on /usr/sbin/mount.cifs. Set it as root with
#
# chmod u+s /usr/sbin/mount.cifs
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"
AMPEL_MOUNT=/tmp/remote-ampel
# 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."
if [ -f ~/.remote-admin ]; then
source ~/.remote-admin
else
log "Mounting $AMPEL_MOUNT..."
if ! mount "$AMPEL_MOUNT"; then
log "Mount failed. Check share configuration."
exit 4
fi
log "Mount successful."
echo ".remote-admin not found! Please create it!"
exit 4
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
if [ ! -f ~/.smbcredentials ]; then
echo ".smbcredentials not found! Please create it!"
exit 5
fi
# Check for xfreerdp
if [ ! -f /usr/bin/xfreerdp ]; then
print "xfreerdp not found. Make sure it is installed"
exit 1
else # check for the mount point
mkdir -p $AMPEL_MOUNT
if grep -qs $AMPEL_MOUNT /proc/mounts; then
echo "$AMPEL_MOUNT already mounted."
else
echo "Trying to mount $AMPEL_MOUNT"
mount $AMPEL_MOUNT
if [ $? -eq 0 ]; then
echo "Mount successful."
else
echo "Mount failed. Check share"
exit 2
fi
fi
fi
sleep 2
for i in $(ls $AMPEL_MOUNT)
do
if [[ $i == *"FREE"* ]]; then
RDP=$(echo $i | cut -f1,2 -d'-')
echo "$RDP is free :)"
xfreerdp /u:$USERNAME /p:$PASSWORD /v:$RDP.zfd.forumzfd.de /dynamic-resolution
umount $AMPEL_MOUNT
echo 'Connection closed. Bye'
exit 0
fi
done
log "No Remote-Admin is free. Try again later."
echo 'No Remote-Admin is free. :( Try again later.'
umount $AMPEL_MOUNT
exit 0