Scanner son réseau local

Nom du fichier : ScanReseauLocal.sh

#!/bin/bash

# Si on n'est pas dans un terminal, se relancer dans mate-terminal
if ! [ -t 1 ]; then
    mate-terminal -- bash -c "sudo bash '$0'; exec bash"
    exit
fi

# =============================================================
#  ScanReseauLocal.sh — Scanner réseau local (Debian)
#  Dépendances : nmap  →  sudo apt install nmap
# =============================================================

# Utilisation :

# Scan automatique (détecte ton réseau tout seul)
# sudo ~/Bureau/ScanReseauLocal.sh

# Scan sur une plage personnalisée
# sudo ~/Bureau/ScanReseauLocal.sh 192.168.1.0/24

# Scan + ports ouverts d'un appareil précis
# sudo ~/Bureau/ScanReseauLocal.sh --ports 192.168.0.42

set -uo pipefail

# ── Couleurs ─────────────────────────────────────────────────
BOLD='\033[1m'
CYAN='\033[0;36m'
GREEN='\033[0;32m'
ORANGE='\033[38;5;214m'
RED='\033[0;31m'
NC='\033[0m'

# ── Vérifications préalables ─────────────────────────────────
check_deps() {
    local missing=()
    for cmd in nmap ip; do
        command -v "$cmd" &>/dev/null || missing+=("$cmd")
    done
    if [[ ${#missing[@]} -gt 0 ]]; then
        echo -e "${RED}Dépendances manquantes : ${missing[*]}${NC}"
        echo -e "Installe-les avec : ${ORANGE}sudo apt install nmap iproute2${NC}"
        exit 1
    fi
}

# ── Détection automatique du réseau actif ────────────────────
detect_network() {
    local cidr
    cidr=$(ip -4 addr show scope global \
           | grep -oP '(?<=inet\s)\d+\.\d+\.\d+\.\d+/\d+' \
           | head -1)

    if [[ -z "$cidr" ]]; then
        echo -e "${RED}Impossible de détecter le réseau. Vérif ta connexion.${NC}"
        exit 1
    fi
    echo "$cidr"
}

# ── Scan principal ───────────────────────────────────────────
scan_network() {
    local cidr="$1"

    echo
    echo -e "${BOLD}${CYAN}══════════════════════════════════════════${NC}"
    echo -e "${BOLD}${CYAN}   🔍  SCAN RÉSEAU LOCAL                  ${NC}"
    echo -e "${BOLD}${CYAN}══════════════════════════════════════════${NC}"
    echo -e "  Plage cible : ${ORANGE}${cidr}${NC}"
    echo -e "  Démarré le  : $(date '+%d/%m/%Y %H:%M:%S')"
    echo -e "${BOLD}${CYAN}══════════════════════════════════════════${NC}"
    echo

    local raw
    raw=$(sudo nmap -sn -T4 \
        -PE -PP \
        -PS21,22,23,25,80,443,445,3389,8080 \
        -PA80,443 \
        -PR \
        "$cidr" 2>/dev/null)

    local count=0

    while IFS= read -r line; do
        if [[ "$line" =~ ^"Nmap scan report for " ]]; then
            local host="${line#Nmap scan report for }"
            local ip hostname
            local regex='\(([^)]+)\)$'
            if [[ "$host" =~ $regex ]]; then
                hostname="${host%% (*}"
                ip="${BASH_REMATCH[1]}"
            else
                ip="$host"
                hostname=""
            fi

            local mac vendor mac_line
            mac_line=$(echo "$raw" | grep -A3 "^Nmap scan report for ${host}$" \
                        | grep "MAC Address" || true)
            if [[ -n "$mac_line" ]]; then
                mac=$(echo "$mac_line" | awk '{print $3}')
                vendor=$(echo "$mac_line" | sed 's/.*(\(.*\))/\1/')
            else
                mac="N/A (machine locale ou accès limité)"
                vendor=""
            fi

            count=$(( count + 1 ))
            echo -e "  ${BOLD}${GREEN}▸ Appareil #${count}${NC}"
            echo -e "    IP       : ${ORANGE}${ip}${NC}"
            [[ -n "$hostname" ]] && \
                echo -e "    Hostname : ${CYAN}${hostname}${NC}"
            echo -e "    MAC      : ${mac}"
            [[ -n "$vendor" ]] && \
                echo -e "    Fabricant: ${vendor}"
            echo
        fi
    done <<< "$raw"

    echo -e "${BOLD}${CYAN}══════════════════════════════════════════${NC}"
    echo -e "  ${BOLD}${GREEN}${count} appareil(s) détecté(s)${NC}"
    echo -e "${BOLD}${CYAN}══════════════════════════════════════════${NC}"
    echo
}

# ── Optionnel : scan de ports sur un appareil ────────────────
scan_ports() {
    local ip="$1"
    echo
    echo -e "${BOLD}${CYAN}── Scan des ports ouverts sur ${ip} ─────────${NC}"
    sudo nmap -T4 --open --top-ports 100 "$ip" 2>/dev/null \
        | grep -E "^[0-9]+/(tcp|udp)|Nmap scan" \
        | sed "s/^/  /"
    echo
}

# ── Point d'entrée ───────────────────────────────────────────
main() {
    check_deps

    local cidr="${1:-}"
    local port_ip=""

    while [[ $# -gt 0 ]]; do
        case "$1" in
            --ports)
                port_ip="${2:-}"
                shift 2
                ;;
            *)
                cidr="$1"
                shift
                ;;
        esac
    done

    [[ -z "$cidr" ]] && cidr=$(detect_network)

    scan_network "$cidr"

    if [[ -n "$port_ip" ]]; then
        scan_ports "$port_ip"
    fi
}

main "$@"

Un fichier bash à mettre sur son bureau pour accéder rapidement à un répertoire

Nom du fichier : Mon_Répertoire.sh
(autoriser l’exécution du fichier comme un programme)

#!/bin/bash

COMMANDES="
    cd '/media/$USER/Mon Répertoire'
    exec bash
"

# Si on n'est pas dans un terminal, se relancer dans mate-terminal
if ! [ -t 1 ]; then
    mate-terminal -- bash -c "$COMMANDES"
    exit
fi

# Si on est déjà dans un terminal, exécution directe
eval "$COMMANDES"

Un fichier bash à mettre sur son bureau pour une mise à jour rapide de Debian

Nom du fichier : MAJ.sh
(autoriser l’exécution du fichier comme un programme)

#!/bin/bash

# ON AFFICHE LE CONTENU DU SCRIPT PAR MESURE DE SÉCURITÉ

COMMANDES="
    cat '$0'
    echo
    sudo apt-get update && sudo apt-get upgrade
    sudo apt-get autoremove && sudo apt-get autoclean
    exec bash
"

# Si on n'est pas dans un terminal, se relancer dans mate-terminal
if ! [ -t 1 ]; then
    mate-terminal -- bash -c "$COMMANDES"
    exit
fi

# Si on est déjà dans un terminal, exécution directe
eval "$COMMANDES"

Circuit en LaTeX avec circuitikz

\documentclass[border=10pt]{standalone}
\usepackage{circuitikz}
\ctikzset{resistor=european}

\begin{document}
\begin{circuitikz}[scale=1.2]
  % === une grille pour s'aider ===
  % \draw [help lines] (-2,-1) grid (9,5);

  % === Source à gauche (bornes inversées) ===
  \draw (0,3) to[battery1] (0,0);

  % === Flèche tension U à gauche du générateur, pointant vers le haut ===
  \draw[->, thick] (-0.6,0.4) -- (-0.6,2.6) node[midway, left] {$U$};

  % === Fil bas de la source ===
  \draw (0,0) -- (6,0);

  % === Fil supérieur gauche avec courant I ===
  \draw (0,3) to[short, i=$I$] (3,3);

  % === Courant I1 sur le fil avant R1, puis R1 centré sur la branche ===
  \draw (3,3) to[short, i=$I_1$] (3.6,3);
  \draw (3.6,3) to[R, l_=$R_1$] (5.4,3);
  \draw (5.4,3) -- (6,3);
  \draw[->, thick] (5.4,3.55) -- (3.6,3.55) node[midway, above] {$U_1$};

  % === Fils verticaux gauche et droit du bloc parallèle ===
  \draw (3,3) -- (3,1.5);
  \draw (6,3) -- (6,1.5);

  % === Courant I2 sur le fil vertical gauche descendant vers R2 ===
  \draw (3,3) to[short, i_=$I_2$] (3,1.5);

  % === Branche basse : R2 + R3 en série ===
  \draw (3,1.5) to[R, l=$R_2$] (4.5,1.5)
                to[R, l=$R_3$] (6,1.5);
  \draw[->, thick] (4.3,1.0) -- (3.2,1.0) node[midway, below] {$U_2$};
  \draw[->, thick] (5.8,1.0) -- (4.7,1.0) node[midway, below] {$U_3$};

  % === Fermeture droite du circuit ===
  \draw (6,3) -- (8,3) -- (8,0) -- (6,0);

\end{circuitikz}
\end{document}

Texmaker génère un pdf, mais on peut aussi utiliser en ligne de commande :

pdflatex circuit.tex

Pour obtenir une image svg à intégrer dans LibreOffice :

sudo apt-get install pdf2svg
pdf2svg circuit.pdf circuit.svg

Un fichier bash circuit.sh pour automatiser tout ça :

#!/bin/bash

# Vérification de l'argument
if [ $# -ne 1 ]; then
  echo "Usage : $0 fichier.tex"
  exit 1
fi

FICHIER="$1"

# Vérification que le fichier existe
if [ ! -f "$FICHIER" ]; then
  echo "Erreur : fichier '$FICHIER' introuvable."
  exit 1
fi

# Nom sans extension
NOM="${FICHIER%.tex}"

# Compilation LaTeX
echo "Compilation LaTeX..."
pdflatex -interaction=nonstopmode "$FICHIER"

if [ $? -ne 0 ]; then
  echo "Erreur lors de la compilation LaTeX."
  exit 1
fi

# Conversion en SVG
echo "Conversion en SVG..."
pdf2svg "${NOM}.pdf" "${NOM}.svg"

if [ $? -ne 0 ]; then
  echo "Erreur lors de la conversion en SVG."
  exit 1
fi

# Nettoyage des fichiers temporaires
rm -f "${NOM}.aux" "${NOM}.log"

echo "Terminé : ${NOM}.pdf et ${NOM}.svg générés."

Utilisation :

chmod +x circuit.sh
./circuit.sh circuit.tex