# Outils linux en ligne de commande



# Top - trouver les processus "ininterruptibles"

Trouver les processus ininterruptible qui font monter le load average sans qu'il y ait de charge CPU ou mémoire apparente.

```shell
top -b -n 1 | awk '{if (NR <=7) print; else if ($8 == "D") {print; count++} } END {print "Total status D: "count}'
```

(ou option "i" dans top). Les processus qui refusent les interruptions CPU (donc empêche les autres de prendre la main) sont marqués "D" dans l'affichage de top.

# Trouver l'adresse IP externe avec ou sans curl

Pour un serveur NATté (adresse IP locale derrière un firewall), l'adresse de sortie est soit celle du firewall soit une adresse d'OUTBOUND qui lui a été affectée.

Pour la connaitre, divers site propose ce service :

```shell
curl ifconfig.me
curl ipaddr.pub
curl https://www.google.com/search?q=what+is+my+ip+address -s | grep -oE "\b([0-9]{1,3}.){3}[0-9]{1,3}\b" -m1
curl -s http://ipecho.net/plain
curl -s http://whatismyip.akamai.com
```

Si curl n'est pas disponible sur un serveur, si on ne peut pas l'installer, essayer :

```shell
wget -qO- ipaddr.pub/cli
wget -qO- http://ipecho.net/plain
wget -qO- icanhazip.com
```

```shell
dig @ns1.google.com TXT o-o.myaddr.l.google.com +short
dig +short myip.opendns.com @resolver1.opendns.com
```

```shell
host myip.opendns.com resolver1.opendns.com | grep -m2 -oE "\b([0-9]{1,3}.){3}[0-9]{1,3}\b" | tail -n1
```

```shell
nslookup -query=TXT o-o.myaddr.l.google.com ns1.google.com | grep -m2 -oE "\b([0-9]{1,3}.){3}[0-9]{1,3}\b" | tail -n1
nslookup myip.opendns.com resolver1.opendns.com | grep -m2 -oE "\b([0-9]{1,3}.){3}[0-9]{1,3}\b" | tail -n1
```

# Screen - retrouver le scrolling

Ajouter les lignes suivante à ~/.screenrc :

<p class="callout info">\# Enable mouse scrolling and scroll bar history scrolling  
termcapinfo xterm\* ti@:te@</p>

Magique !

# TLS 1.2 avec curl ou php-curl - SSL - Cipher

Problème : certains sites/API réclament TLS1.2 pour les échanges (exemple : Paypal à partir du 30/06/2018).  
Par défaut sur CentOS7, si openssl est à jour (&gt;1.0.1) ainsi que curl et libcurl, ils doivent utiliser tls 1.2 par défaut.  
Si ce n'est pas le cas (test : curl https://tlstest.paypal.com), les mettre à jour ainsi que NSS:

```
yum update nss curl libcurl
```

Quelques commandes utiles :

Valider les protocoles utilisés par curl :

```shell
curl -v https://www.howsmyssl.com/a/check
```

Vérifier les protocoles acceptés par un site :

```shell
openssl s_client -connect www.google.com:443
- ou -
nmap --script ssl-enum-ciphers -p 443 www.google.com
```