[Bash] Supprimer toutes les lignes d'un fichier texte

En toute simplicité :

> <fichier>

Par exemple, pour vider la liste des serveurs DNS à utiliser :

> /etc/resolv.conf

Cette syntaxe est également utile pour créer un fichier texte vierge.

Développement Bash

[Bash] Remplacement de la forme key=value dans un fichier texte

La regex ci-dessous utilisée avec le programme sed permet de remplacer l’ancienne valeur attribuée à KEY par la nouvelle valeur VALUE dans le fichier file :

sed -i "s/\(KEY *= *\).*/\1VALUE/" <file>

Par exemple, pour remplacer le nom d’hôte d’un système CentOS par la valeur contenue dans $host_name :

sed -i "s/\(HOSTNAME *= *\).*/\1$host_name/" /etc/sysconfig/network
Développement Bash

[Debian] Équivalent de "yum whatprovides"

Les outils apt-get et aptitude ne possèdent pas d’équivalent à l’option whatprovides de yum. Cependant, il existe un logiciel nommé apt-file capable de remplir cette tâche :

aptitude install apt-file
apt-file update
apt-file search <file>
SysAdmin RPM, yum

[Linux] Mettre à jour l'heure de son système par internet sans NTP

Voici une astuce trouvée sur un forum permettant de mettre à jour l’heure d’un système sous Linux par internet mais sans utiliser NTP :

date -s "$(wget -S  "https://www.google.com/" 2>&1 | grep -E '^[[:space:]]*[dD]ate:' | sed 's/^[[:space:]]*[dD]ate:[[:space:]]*//' | head -1l | awk '{print $1, $3, $2,  $5 ,"GMT", $4 }' | sed 's/,//')"

Le principe est d’utiliser le champ Date se trouvant dans les en-têtes HTTP de la réponse d’un serveur web lors d’une requête vers celui-ci. Il faut cependant s’assurer que le serveur web contacté soit à l’heure, lui ! Le choix du moteur de recherche Google est donc une bonne idée.

L’utilisation de cette méthode se justifie lorsque l’on veut mettre à jour l’heure d’une machine se trouvant derrière un proxy.

SysAdmin Linux, NTP

[Fedora] Autoriser le partage DLNA sous Netfilter

GNOME 3 intègre dans le panel des options une rubrique de partage permettant entre autres de diffuser du contenu multimédia en DLNA. Le serveur sous-jacent utilisé se nomme rygel et ce dernier utilise un port d’écoute TCP dynamique.

Seulement voila, Netfilter n’est pas configuré par défaut pour laisser passer le trafic DLNA, et encore moins pour détecter quel port d’écoute est utilisé par rygel. Il est donc nécessaire d’entreprendre quelques actions pour rectifier la situation :

  1. Modifier le port d’écoute de rygel. Pour cela, il faut modifier la ligne port=0 (dynamique) par port=65530 dans le fichier de configuration /etc/rygel.conf. Bien entendu, le choix du numéro du port est complètement arbitraire.
  2. Autoriser le port TCP 65530 et le port UDP 1900 en entrée dans la configuration de Netfilter. On pourra utiliser l’outil graphique “firewall” par exemple pour réaliser cette tâche.
  3. Redémarrer rygel.

Il ne vous reste plus qu’à tester le bon fonctionnement de votre modification en utilisant un client DLNA sur un autre appareil pour lancer la lecture d’un film par exemple :)

SysAdmin Fedora, DLNA, Netfilter, GNOME 3