Created
February 20, 2026 12:17
-
-
Save Toxblh/5d296dd5080f0665e20508e3dd52bd5a to your computer and use it in GitHub Desktop.
rdp
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/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