https://github.com/andreesteve/crdp
A bash script to manage RDP connections with keyring integration
https://github.com/andreesteve/crdp
cli keyrings rdp rdp-connection
Last synced: 4 months ago
JSON representation
A bash script to manage RDP connections with keyring integration
- Host: GitHub
- URL: https://github.com/andreesteve/crdp
- Owner: andreesteve
- Created: 2017-11-12T10:38:25.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2018-12-29T19:07:00.000Z (over 6 years ago)
- Last Synced: 2024-12-29T21:11:55.730Z (5 months ago)
- Topics: cli, keyrings, rdp, rdp-connection
- Language: Shell
- Size: 9.77 KB
- Stars: 2
- Watchers: 1
- Forks: 4
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# crdp - a CLI for RDP clients
crdp is a Bash 4 program that wraps RDP a CLI client like [freerdp](https://github.com/FreeRDP/FreeRDP), manages RDP connections
and integrates with keyrings for storing passwords.## Features
* Integrated with *secret-tool* for password-less connection
* Keep your connection configuration organized in a file## Example
On a configuration file, you keep your connection and their configuration:
```
# configuration to connect to the office
[office]
hostname=box1.example.com
_u=lab
_d=example# configuration to connect to mom's pc
[moms]
hostname=192.168.0.5
```Then you can connect by calling:
```
crdp connect office
```If keyring integration is enabled, you will only need to provide password on the first time you connect.
## Usage
```
usage: crdp []These are the available commands:
COMMAND DESCRIPTION
version prints the version string
help prints this help message
connect connects to a remote desktop
config-help shows help information for configuration fileYou can type 'crdp help ' to get more details on how to run that command.
```## Installation
Clone this repo into a folder, enable execution of the script file and add it to your path.
```
$ git clone https://github.com/andreesteve/crdp.git ~/bin/crdp
$ chmod +x ~/bin/crdp/crdp
$ export PATH=$PATH:~/bin/crdp
```Call any of the help command and crdp will initialize the base configuration automatically.
```
$ crdp help config-help
```Open the configuration file *~/.local/share/crdp.cfg* and add one section for each RDP you want to use.
For example:```
[general]
# controls whether keyring should be used for storing passwords
use-keyring=1# controls which rdp client cli to use
rdpclient=xfreerdp# which switch to be used to provide password and hostname to the rdp client cli
rdpclient_password_switch=p
rdpclient_hostname_switch=v# pre and post fixes for cli switches
rdpclient_switch_prefix=/
rdpclient_switch_postfix=:# all values under the general section applies to all connections
# add additional arguments to all connections
additional_args=/f /sound:sys:alsa,format:1,quality:high /microphone:sys:alsa,format:1,quality:high /home-drive +clipboard /multimon /monitors:0,2[office]
hostname=office.example.com
_u=andre-office
_d=mydomain
_gp=$password
_g:mygateway.example.com
_gu=andre[home]
hostname=192.168.0.100
_u=andre
```Connect to the desired RDP by:
```
$ crdp connect office
# or
$ crdp connect home
```## Documentation
crdp has a single configuration file (INI format) under
It has section called [general] that has configuration values for this program.
You may add as many new sections as you want to configure each different RDP connection you have.
All properties starting with _ (underscore) are passed directly to the RDP command after the undescore is removed.This is an example of configuration file:
# global configuration goes here
[general]
use-keyring=1
rdpclient=xfreerdp
rdpclient_password_switch=p
rdpclient_hostname_switch=v
rdpclient_switch_prefix=/
rdpclient_switch_postfix=:
_u=andre# configuration for connecting to the machine at the office
[officepc]
hostname=box1.example.com
_u=lab
_d=example
# configures the gateway password to be the same as the password used for the connection
_gp=$password# configuration to connect to mom's pc
[moms]
hostname=192.168.0.5For such configuration file, a call to:
crdp connect officepc
Would yield this RDP call:
xfreerdp /u:lab /v:box1.example.com /d:example /p: /gp:
will be the value that is prompted to the user (or retrieved from the keychain).
Note that the property '_gp=$password' uses the special variable $password. This tells crdp to use the same password on the connection
for the gateway authentication.Note that because '_u' was redifined on the [officepc] section, it takes precedence over the value under the [general] section.
Limitations:
* Comments must start with # and that must be the first character on the line. (Actually # anywhere in the line makes it a comment line!)
* No space between property name and the equals (=) sign
* Section names must be unique. Do not reuse [general].
* Variable substitution (e.g. ) cannot be combined with other static values on propertyFor more details on the available configuration values, check the configuration file.