Skip to content

Instantly share code, notes, and snippets.

@Toxblh
Created February 20, 2026 12:17
Show Gist options
  • Select an option

  • Save Toxblh/5d296dd5080f0665e20508e3dd52bd5a to your computer and use it in GitHub Desktop.

Select an option

Save Toxblh/5d296dd5080f0665e20508e3dd52bd5a to your computer and use it in GitHub Desktop.
rdp
#!/bin/bash
# ~/.local/bin/rdp
# Использование: rdp home
# rdp home +drive
# rdp home +drive +usb
CONFIG_DIR="$HOME/.config/rdp"
HOSTS_FILE="$CONFIG_DIR/hosts"
COMMON="/size:100%h /floatbar /dynamic-resolution /scale:180 /scale-desktop:200 \
/sound:sys:pulse /mic:sys:pulse \
/network:auto /cert:ignore \
/auto-reconnect-max-retries:5 \
+clipboard +aero +window-drag +menu-anims +themes +wallpaper +auto-reconnect"
# Опциональные флаги
declare -A FLAGS
FLAGS[+drive]="+home-drive"
FLAGS[+ssh]="/ssh-agent"
FLAGS[+usb]="/usb:id:3547:0007"
FLAGS[+printer]="/printer"
FLAGS[+multimon]="/multimon"
# Загрузка хостов из файла
declare -A HOSTS
if [[ ! -f "$HOSTS_FILE" ]]; then
mkdir -p "$CONFIG_DIR"
cat > "$HOSTS_FILE" <<EOF
# Формат: alias IP пользователь
# home 192.168.0.3 user
# work 10.0.0.5 andrei
home 192.168.0.3 user
EOF
echo "Создан файл конфигурации: $HOSTS_FILE"
fi
while read -r alias ip user; do
# Пропускаем комментарии и пустые строки
[[ "$alias" =~ ^#.*$ || -z "$alias" ]] && continue
HOSTS[$alias]="$ip $user"
done < "$HOSTS_FILE"
get_pass() {
secret-tool lookup service rdp profile "$1"
}
if [[ -z "$1" || "$1" == "--help" ]]; then
echo "Использование: rdp <хост> [опции]"
echo ""
echo "Доступные хосты:"
for key in "${!HOSTS[@]}"; do
read -r ip user <<< "${HOSTS[$key]}"
echo " rdp $key → $user @ $ip"
done
echo ""
echo "Доступные опции:"
for key in "${!FLAGS[@]}"; do
echo " $key → ${FLAGS[$key]}"
done
echo ""
echo "Примеры:"
echo " rdp home"
echo " rdp home +drive"
echo " rdp home +drive +usb"
exit 0
fi
if [[ -z "${HOSTS[$1]}" ]]; then
echo "Неизвестный хост: $1"
exit 1
fi
read -r HOST USER <<< "${HOSTS[$1]}"
PASS=$(get_pass "$USER")
if [[ -z "$PASS" ]]; then
echo "Пароль для '$USER' не найден в keyring"
echo "Сохрани его выполнив в консоли:"
echo " secret-tool store --label='RDP $USER' service rdp profile $USER username $USER"
exit 1
fi
# Собираем опциональные флаги из аргументов 2..N
EXTRA=""
shift
for arg in "$@"; do
if [[ -n "${FLAGS[$arg]}" ]]; then
EXTRA="$EXTRA ${FLAGS[$arg]}"
else
echo "Неизвестная опция: $arg"
exit 1
fi
done
echo "Подключаюсь: $USER @ $HOST $EXTRA"
xfreerdp /v:$HOST /u:$USER /p:$PASS $COMMON $EXTRA
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment