# Cheatsheet serveur Urbike
[TOC]
## Intro: fonctionnement global
On peut créer nos propres commandes bash en utilisant la méthode `alias`:
```bash
# création d'une commande
alias say_hello_world="echo 'hello world'"
# exécution de la commande
say_hello_world
# retourne "hello world"
```
On peut ensuite enregistrer ces commandes dans le fichier `.bashrc` ou encore mieux: `.bash_aliases`, qui se trouve dans le dossier Home de votre ordinateur (pour aller rapidement dans votre dossier utilisateur, utilisez le tilde ~ : `cd ~`). Parfois le `.bash_aliases` n'existe pas ; vous pouvez dans ce cas là mettre les liases dans votre `.bashrc`
Vous pouvez à présent utiliser un éditeur de texte pour l'ouvrir. Si vous ne trouvez pas le fichier dans votre explorateur, activez l'affichage des fichiers cachés.
## Connexion SSH basique
```bash
alias ssh_urbike='ssh <VOTRE_NOM_DUTILISATEUR>@141.95.152.227'
```
Pour vous connecter au serveur, il faudra aussi que vous vous soyez créé une clé SSH et que quelqu'un qui a accés au serveur l'ait ajouté aux clés SSH autorisées. Une fois cette manipulation effectuée, vous pourrez lancer des commandes sur le serveur. Voir [la partie sur l'ajout d'utilisateurs](#Je-veux-permettre-à-une-nouvelle-personne-d’accéder-au-serveur-comment-faire-)
## Le `.bash_aliases` complet
:::danger
Attention, remplacez bien **`{{VOTRE_NOM_DUTILISATEUR}}`** par votre **nom d'utilisateur** réel sur le serveur !
:::
Copiez le code ci-dessous à l'intérieur de votre `.bash_aliases`. De cette manière, vous aurez aussi la suggestion des commandes disponibles facilement, en tapant deux fois sur `TAB`:
```bash
jules@julesPC:~ $ ssh_urbike
ssh_urbike
ssh_urbike_get_logs
ssh_urbike_launch_script
ssh_urbike_log_sdroad_exports_bls
ssh_urbike_log_sdroad_ftp_delete
ssh_urbike_log_sdroad_ftp_status_reports
ssh_urbike_log_sdroad_imports_bruxelles
ssh_urbike_log_sdroad_imports_gent
ssh_urbike_log_sdroad_slack_notifications_gent
ssh_urbike_log_sdroad_slack_notifications_vt
ssh_urbike_sdroad_exports_bls
ssh_urbike_sdroad_exports_bls_pdfs
ssh_urbike_sdroad_ftp_delete
ssh_urbike_sdroad_ftp_status_reports
ssh_urbike_sdroad_imports_bruxelles
ssh_urbike_sdroad_imports_gent
ssh_urbike_sdroad_slack_notifications_gent
ssh_urbike_sdroad_slack_notifications_vt
```
```bash
URBIKE_USER={{VOTRE_NOM_DUTILISATEUR}}
# ----- Fonctions génériques
# Connexion rapide au serveur en SSH
alias ssh_urbike="ssh ${URBIKE_USER}@141.95.152.227"
scp_urbike() {
scp ${URBIKE_USER}@141.95.152.227:~/$1/$2 $2
}
# Gérer les logs d'un script sur le serveur:
# - les lister: `ssh_urbike_get_logs <nom_du_dossier_du_script`
# - afficher un fichier de logs: `ssh_urbike_get_logs <nom_du_dossier_du_script nom_du_fichier.txt`
ssh_urbike_get_logs() {
if [[ $2 ]]; then
# Download the file at path requested
ssh_urbike "cat ~/$1/$2"
else
# List exports
ssh_urbike "cd ~/$1 && ls | grep ".txt""
fi
}
# Lancer un script sur le serveur. On peut donner un argument optionnel:
# `ssh_urbike_launch_script nom_du_dossier_du_script [argument_optionnel]`
ssh_urbike_launch_script() {
ssh_urbike "cd ~/$1 && python3 ./main.py $2"
}
# ----- SDRoad-Exports-BLs
# Consulter les logs
alias ssh_urbike_log_sdroad_exports_bls='ssh_urbike_get_logs SDRoad-Exports-BLs'
# Lancer manuellement le script de génération de PDF pour la date d'aujourd'hui
alias ssh_urbike_sdroad_exports_bls='ssh_urbike_launch_script SDRoad-Exports-BLs'
# pour le lancer, écrivez la commande `ssh_urbike sdroad_pods` pour le lancer pour aujourd'hui, ou `ssh_urbike_sdroad_pods 2022-03-01` pour une date particulière ici par exemple le 1er mars 2022.
# Gérer les exports PDF sur le serveur:
# - les lister: `ssh_urbike_sdroad_pods_exports`
# - en télécharger un: `ssh_urbike_sdroad_pods_exports nom_de_lexport_sur_le_serveur.pdf`
ssh_urbike_sdroad_exports_bls_pdfs() {
if [[ $1 ]]; then
# Download the file at path requested
scp_urbike SDRoad-Exports-BLs $1
else
# List exports
ssh_urbike 'cd ~/SDRoad-Exports-BLs && ls | egrep "*\.pdf"'
fi
}
# ----- SDRoad-FTP-Delete
# Lancer le script
alias ssh_urbike_sdroad_ftp_delete='ssh_urbike_launch_script SDRoad-FTP-Delete'
# Afficher les logs
alias ssh_urbike_log_sdroad_ftp_delete='ssh_urbike_get_logs SDRoad-FTP-Delete'
# ----- SDRoad-FTP-Status-Reports
# Lancer le script
alias ssh_urbike_sdroad_ftp_status_reports='ssh_urbike_launch_script SDRoad-FTP-Status-Reports'
# Afficher les logs
alias ssh_urbike_log_sdroad_ftp_status_reports='ssh_urbike_get_logs SDRoad-FTP-Status-Reports'
# ----- SDRoad-Imports-Bruxelles && SDRoad-Imports-Gent
# Lancer le script
alias ssh_urbike_sdroad_imports_bruxelles='ssh_urbike_launch_script SDRoad-Imports-Bruxelles'
alias ssh_urbike_sdroad_imports_gent='ssh_urbike_launch_script SDRoad-Imports-Gent'
# Afficher les logs
alias ssh_urbike_log_sdroad_imports_bruxelles='ssh_urbike_get_logs SDRoad-Imports-Bruxelles'
alias ssh_urbike_log_sdroad_imports_gent='ssh_urbike_get_logs SDRoad-Imports-Gent'
# ----- SDRoad-Slack-Notifications-VT && SDRoad-Slack-Notifications-GENT
# Lancer le script
alias ssh_urbike_sdroad_slack_notifications_vt='ssh_urbike_launch_script SDRoad-Slack-Notifications-VT'
alias ssh_urbike_sdroad_slack_notifications_gent='ssh_urbike_launch_script SDRoad-Slack-Notifications-GENT'
# Afficher les logs
alias ssh_urbike_log_sdroad_slack_notifications_vt='ssh_urbike_get_logs SDRoad-Slack-Notifications-VT'
alias ssh_urbike_log_sdroad_slack_notifications_gent='ssh_urbike_get_logs SDRoad-Slack-Notifications-GENT'
```
## Je veux permettre à une nouvelle personne d'accéder au serveur, comment faire ?
:::info
Il faut déjà que vous ayiez les droits admin sur le serveur. Si ce n'est pas le cas, vous ne pourrez pas faire la démarche.
:::
Vous aurez besoin de demander la **clé SSH publique** de la personne pour laquelle vous souhaitez créer le compte. Elle est souvent située dans `~/.ssh/id_rsa.pub` (attention, id_rsa est la clé *privée*, ne donnez que la clé publique !)
Connectez-vous au serveur, puis effectuez les manipulations suivantes :
```bash
# Créer le nouvel utilisateur
sudo adduser <NOUVEAU_NOM_DUTILISATEUR>
# Créer le répertoire `.ssh` de l'utilisateur
sudo mkdir /home/<NOUVEAU_NOM_DUTILISATEUR>/.ssh
# Rentrez dans ce dossier
cd /home/<NOUVEAU_NOM_DUTILISATEUR>/.ssh # rentrez dans le dossier
# Ouvrez le fichier `authorized_keys` ...
sudo nano authorized_keys
# ...et collez la clé publique de la personne à l'intérieur du fichier.
# Sortez du document en sauvant les modifs (Cmd+S) puis en quittant (Cmd+X)
```
Si vous souhaitez donner les **droits d'admin** à un utilisateur, vous pouvez effectuer la manipulation supplémentaire suivante :
```bash
# Ajouter le user au groupe sudo
sudo usermod -aG sudo <user>
```
Cela permet à cet utilisateur de pouvoir ajouter des utilisateurs à son tour.