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
    
    Programming Bash

    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

    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

    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 · GNOME 3 · Netfilter · DLNA

    La fonction ci-dessous permet de tester une adresse IPv4 pour vérifier qu'elle est bien formée :

    is_ipv4() {
      local -r regex='^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$'
    
      [[ $1 =~ $regex ]]
      return $?
    }
    

    Et voici un exemple d'utilisation :

    is_ipv4 $ip
    
    if [ "$?" -ne 0 ]
    then
      echo "[x] $ip is not an IPv4"
      exit 1
    fi
    
    Programming Bash