Connexion

Besoin d'aide ? Une question ? Un avis ? Rejoignez nous sur notre salon IRC pour clavarder

Forum

Discussions Libres Fais péter ton bashrc ! Qu'avez vous dans votre bashrc ?

OPS56 Membre non connecté

Rang

Avatar

Inscrit le : 18/11/2008 à 18h55

Localisation : Morbihan

Messages: 1570

Le 01/06/2020 à 22h13

Reprise du message précédent

Voici le mien, j'ai adopté la metéo et la lune :super:
Code BASH :
if [ -f /etc/bashrc ]; then
    . /etc/bashrc
fi
alias y2mp3="youtube-dl -t -x --audio-format mp3 --audio-quality 0"
alias y2mp4="youtube-dl -t -f mp4"
alias Fixe="ssh -XC ops@fixe"
alias Cps="ssh -XC cps@CPS"
alias Tps="ssh -XC tps@TPS"
alias meteo="curl wttr.in/Vannes?lang=fr"
alias lune="curl wttr.in/Moon?lang=fr"


J'ai juste youtube-dl pour récupérer des vidéos ou du son.
Plus les connexions SSH vers les machines de la maison.

@+


frenchmageiauser_a1258
Asus X71SL Intel P7350 - 4Go Ram - Nvidia 9300m GS (Tri boot Mageia 7- 64 bits - Plasma 5.15.4 / Open suse 15.1 Plasma 5.12.8 / Windows 8.1)
Core i5 760 - 8Go Ram - Nvidia Gforce 450 - (Triple boot Mageia 7-64 bits - Plasma 5.15.4 / Mint 18.1 Cinamon / Open Suse 15.1 Plasma 5.12.8)
   
Jybz Membre non connecté

Rang

Avatar

Modérateur Administrateur

Inscrit le : 10/10/2018 à 10h26

Messages: 2842

Le 22/06/2020 à 23h06
update de mes fonctions d'encodage / décodage :
Code BASH :
KEYPASS=UnMotDePasse
function DECODE() { if [ 0 -ne ${#} ]; then echo "${*}" |  openssl enc -a -aes-192-cbc -d -k "${KEYPASS}" ; else openssl enc -a -aes-192-cbc -d -k "${KEYPASS}" </dev/stdin ; fi ; }
function ENCODE() { if [ 0 -ne ${#} ]; then echo "${*}" | openssl enc -a -aes-192-cbc -k "${KEYPASS}" ; else openssl enc -a -aes-192-cbc -k "${KEYPASS}" </dev/stdin ; fi ; }


Exemple d'utilisation :
Code BASH :
[jybz@localhost ~]$ sensors | KEYPASS=SpéMLO ENCODE | nc termbin.com 9999
https://termbin.com/qnr3
 
[jybz@localhost ~]$ curl -s termbin.com/qnr3
U2FsdGVkX19hH++JJV5B7FaFoKojG2NxyPnDVq8+ZxawVz4ZiS9R1vAZVCnQz5Ly
0l/6b6QylpmGHmni4Q5ul5Trzua7chA99NnaZrmWHTlQ73+p/0wqhaZMbDkwvhVo
Wv+QpqBEQsPArAzEGfaHGkpC/uaO2qZGwm5J8+jLCg3FDIUrkbuDSlGh9CscBfof
xvS6KdgkHajmrWdTsRV+DDTjo0AX3D77Tz7hxCPV/tcswyD8De4hhX2b0TC915lU
Sz1pubm704QqB0Bb72J3atSQxu2YIUUv3DZ2cZWSHB2Bwi8MqawbiK5U2NvPGwXs
uWXB9wBV2Xco2p+C4QfZxv9uE1D+1NC7tTJc16DVQJu41se9PClVEpjCu/k5WaYS
CDkS6+kSRhdKhY+0MCH1QGAyRXevL1747rO2BDl+N+JB2hwl0mxWCMglT6urXGQl
c2R9ir8sNXH/AHUIO3l4OwIqutFxtc9qS4oGsUi+mYQzlOTuKzE5AFdPtR3YfYZG
WW3rpCYXQ+6dYxvMxFJvsV9iGCYV0q0HuTmWe3YNHiub4HmISa2zV6B1qcninSne
404wbl+IIc22OjpdXgzKjrB4utsQmmXhNthWpWMOelfqYK/ubQnFmd9zUKPxuE2x
Fo3P8eHh47JwtwFGrojLOtlWrRWM62LhgUzY0+NiPLH7VeouNRjFzez47s3ZG1wX
Jhzvhf88PhHoGQBV92utzHCIk1pnVZ94i+pNDppHrR7X3V9Vldl9tDfSxPfxde6+
jveBF437SVvCUCF1W00Bwf1DQ5rHhGC1H/X1d5k0l2V4jO09qDqQZjD1e9hT3eH9
//PZ/1aa+cOUNGy97bGmJx8LU1Q3IHWK5HmV9ngv9PGOmD6dbXQMon0/bZ6yba4N
Qc6E/YjHA9iqIBT3NX8xW0U2i/nOe32xv8Zji1NXcT4gXA50a1Nzg2mLA3iGo3mF
LCq5k/5iHuuvZRZ0CiBj89NMQ7DpZ/uDdN5KAz1Etwzlr4bpZAdnGYZgTUh3vd/m
OTm5cQDqG0YGSeX+IFWGYM54NL4KyDZH7qZhOS1SX/DXYThxvoNxwI8kKSazQn9I
X/zjRX+55N56uEjNBXRhQ5dFr5TGOe5uTsLrkdYX8Wo9UO5UT4gzYHDm82GpsyvN
 
[jybz@localhost ~]$ curl -s termbin.com/qnr3 | DECODE
bad decrypt
139815402866496:error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt:crypto/evp/evp_enc.c:536:
 
[jybz@localhost ~]$ curl -s termbin.com/qnr3 | KEYPASS=SpéMLO DECODE
iwlwifi_1-virtual-0
Adapter: Virtual device
temp1:        +50.0°C  
thinkpad-isa-0000
Adapter: ISA adapter
fan1:        4137 RPM
temp1:        +45.0°C  
temp2:         +0.0°C  
temp3:         +0.0°C  
temp4:         +0.0°C  
temp5:         +0.0°C  
temp6:         +0.0°C  
temp7:         +0.0°C  
temp8:         +0.0°C  
pch_wildcat_point-virtual-0
Adapter: Virtual device
temp1:        +49.0°C  
BAT0-acpi-0
Adapter: ACPI interface
in0:         +12.31 V  
coretemp-isa-0000
Adapter: ISA adapter
Package id 0:  +46.0°C  (high = +105.0°C, crit = +105.0°C)
Core 0:        +47.0°C  (high = +105.0°C, crit = +105.0°C)
Core 1:        +46.0°C  (high = +105.0°C, crit = +105.0°C)
acpitz-acpi-0
Adapter: ACPI interface
temp1:        +45.0°C  (crit = +128.0°C)
BAT1-acpi-0
Adapter: ACPI interface

Second exemple :
Code BASH :
[jybz@localhost ~]$ KEYPASS=SpéMLO ENCODE "Voici un second test pour MLO !" | nc termbin.com 9999
https://termbin.com/ojlz
 
[jybz@localhost ~]$ curl -s termbin.com/ojlz
U2FsdGVkX184dPJAxCkkH397SipT0rTHgoM9aGQ0TlKR1rSMwv4QliZSTQRD+WdE
HDMrvJ4cv2EXrzbPzbyouQ==
 
[jybz@localhost ~]$ curl -s termbin.com/ojlz | DECODE
bad decrypt
139972709439296:error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt:crypto/evp/evp_enc.c:536:
 
[jybz@localhost ~]$ curl -s termbin.com/ojlz | KEYPASS=SpéMLO DECODE
Voici un second test pour MLO !
 


La mise à jour :
La fonction ne pouvait être qu'utilisée seule (ex : ENCODE "message à coder" ) et maintenant elle peut en plus être utilisée à travers un pipe (ex : echo "message à coder" | ENCODE )
   
Jybz Membre non connecté

Rang

Avatar

Modérateur Administrateur

Inscrit le : 10/10/2018 à 10h26

Messages: 2842

Le 07/07/2020 à 16h24
J'ai refait le script que j'avais pour envoyer des sms sur son numéro free-mobile.
Bon, ce n'est pas dans le bashrc, mais on pourrait l'y ajouter, tiens d'ailleurs, je vous fais la modification en live !

Préalablement, il faut avoir préalablement (activer l'option et copier ses identifiants sur son compte free) sauvegarder ce fichier texte :
~/.config/FreeMobileSMSID
Code TEXT :
{
    "ID" : "01234567",
    "key" : "0a1b2c3d4e5f6g7"
}


Puis, copier ses lignes dans le bashrc
Code BASH :
ID=$(cat ${HOME}/.config/FreeMobileSMSID | jq -r .ID)
PASS=$(cat ${HOME}/.config/FreeMobileSMSID | jq -r .key)
function freesms() {
if [ 0 -ne ${#} ]; then MESSAGE="$(echo ${*} | sed -e 's/"/\\"/g' )" ; else MESSAGE="$(cat /dev/stdin | sed -e 's/"/\\"/g' )" ; fi ;
JSON="$(echo "{ \"user\" : \"${ID}\", \"pass\" : \"${PASS}\", \"msg\" : \"${MESSAGE}\" }")" ;
curl -s -H "Content-Type: application/json; charset=UTF-8" -X POST -d "${JSON}" https://smsapi.free-mobile.fr/sendmsg ;
}
 


Son utilisation est simple et en deux versions :
Code BASH :
freesms "Coucou ! Voici un sms !"

Code BASH :
echo "Une sortie de commande redirigée." | freesms


Quelle utilisation en ai-je ?
J'ai une tâche cron sur mon Pi qui, chaque heure, vérifie mon adresse IPv4. Dès que l'ip change, je reçois un SMS me prévenant que l'adresse IP à changé.

PS : il faut installer jq ! J'utilise jq pour "parser" le fichier de configuration json. urpmi jq ;)
   
Jybz Membre non connecté

Rang

Avatar

Modérateur Administrateur

Inscrit le : 10/10/2018 à 10h26

Messages: 2842

Le 15/07/2020 à 20h30
Sur la même vague qu'envoyer des sms, voici la variante pour envoyer des emails sans configurer (ou sans toucher à la configuration) de l'agent mailx (postfix ou autre).
Cette fois si, je trouve qu'il y a trop de ligne pour le mettre dans le bashrc, alors ça sera un script dans ~/bin/ on le nommera mailme

Préalablement, il faut avoir un fichier avec les identifiants mails qu'on souhaite :
cat ~/.config/email_cred.conf
Code TEXT :
{
  "email": "AdresseDuCompteEmail@provider.tld",
  "password": "AAAaaaBBBbbbCCCccc==",
  "SMTP": "smtp://smtp.free.fr:587"
}

Ici, le mot de passe n'est pas a inscrire en clair, mais en base64.
Autrement, on peut générer le fichier en une ligne de commande :
Code BASH :
echo -e "{\n  \"email\": \"monEmail@provider.fr\",\n  \"password\": \"$(echo "mon mot de passe en clair" | basenc --base64)\",\n  \"SMTP\": \"smtp://smtp.provider.fr:587\"\n} >>~/.config/email_cred.conf


Puis, le script ~/bin/mailme
Code BASH :
#!/bin/bash
 
export PATH="${PATH}:/usr/local/bin:/usr/local/games:/usr/games:${HOME}/.local/bin:${HOME}/bin"
export LC_ALL="UTF-8"
 
CONF_FILE="${HOME}/.config/email_cred.conf"
 
function send_mail() {
        echo "${MESSAGE}" | mailx -n -s "${SUBJECT}" -S sendcharsets="UTF-8" -S ttycharset="UTF-8" -S from=${EMAIL} -S ${SMTP_STARTTLS} -S smtp=${SMTP_SERVER} -S ${SMTP_AUTH} -S smtp-auth-user="${SMTP_USER}" -S smtp-auth-password="${SMTP_PASS}" ${DESTINATAIRE}
}
 
CONFIG=$(cat ${CONF_FILE} | jq . )
if [ 0 -ne ${?} ]; then
    echo -e "The configuration file is not proper formated." >&2
    exit 1
fi
EMAIL=$(echo "${CONFIG}" | jq --raw-output '.email')
DESTINATAIRE="${DESTINATAIRE:=${EMAIL}}"
SUBJECT="${SUBJECT:="Untitle..."}"
 
SMTP_STARTTLS="smtp-use-starttls"
SMTP_SERVER=$(echo "${CONFIG}" | jq --raw-output '.SMTP')
SMTP_AUTH="login"
SMTP_USER="$(echo "${EMAIL}" | sed 's/@.*$//' )"
SMTP_PASS="$(echo "${CONFIG}" | jq --raw-output '.password' | basenc -d --base64 )"
 
 
if [ 0 -ne ${#} ]; then 
        MESSAGE="$(echo ${*} | sed -e 's/"/\\"/g' )"
else
        MESSAGE="$(cat /dev/stdin | sed -e 's/"/\\"/g' )"
fi
 
send_mail
 
exit 0
 


Son utilisation peut être très simple :
Code BASH :
mailme message

qui envoi un message sur la même boite email duquel est envoyé le message, avec comme sujet "Untitle..."
Code BASH :
DESTINATAIRE="jeanvaljean@miserable.fr" mailme message

Une variante précisant un destinataire,
Code BASH :
DESTINATAIRE="jeanvaljean@miserable.fr" SUBJECT="Un autre sujet" mailme "message"

Une variante précisant le destinataire et le sujet
Code BASH :
top | head -n 20 | DESTINATAIRE="toto@poney.fr" SUBJECT="Resultat de top" mailme

Une variante montrant l'utilisation avec comme message le retour d'une commande.

Pourquoi la variable PATH est redéfinie ?
Car je commence à utiliser cron, et aucune variable n'est défini, ni même le PATH, et tous les scripts perso deviennent introuvable, je prends habitude de les ajouter. Même si ici, ça semble inutile.
   
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie