*

Offline TonyWhite

  • Apostolo dello SPAM
  • ********
  • 33.091
  • 198
    • Se proprio non hai un cazzo da fare...
I nostri script
« il: 29 Maggio 2019, 18:34:40 »
Condividiamoli qui!

P.S.
Scusate l'immensa lunghezza del post :lkib:

*

Offline Cire

  • Utente più fastidioso del foro, ben più di Sacco
  • ********
  • 30.501
  • 100
  • Ogni donna sogna un pezzo di Cire
    • Dubito lo finirò tanto presto
Re:I nostri script
« Risposta #1 il: 30 Maggio 2019, 08:54:29 »
 XD Aggiornare la mirrorlist
Codice: [Seleziona]
reflector --country 'Italy' --country 'Germany' --latest 50 --age 24 --sort rate --save /etc/pacman.d/mirrorlist;  rm -f /etc/pacman.d/mirrorlist.pacnew

 XD Pulizia arch
Codice: [Seleziona]
sudo pacman-optimize
sudo pacman -Rsn $(pacman -Qqdt)
sudo paccache -r -u
sudo pacman -Sc

Poi ho gli script per montare le condivisioni di rete.

Edit:
E questo
Codice: [Seleziona]
#! /bin/bash
#Da terminale spostarsi nella cartella e modificare il grep qui sotto
mkdir estratti
grep -r cliente
#cambiare bash con termine di ricerca
FILE_LIST=$(grep -r cliente | cut -d':' -f1)
for file in ${FILE_LIST[@]}; do cp $file estratti/$file ; done
Che non ricordo a cosa servisse esattamente (commentato male) ma doveva essere qualcosa per cercare nei file determinate parole.

Forse per recuperare tutte le mail destinate a un cliente dal MailEnable, il nostro vecchio server di posta.
« Ultima modifica: 30 Maggio 2019, 08:57:36 da Cire »
Initiative Q https://initiativeq.com/invite/BgX4fhL6m
PI Network minepi.com/Ci91re

*

Offline TonyWhite

  • Apostolo dello SPAM
  • ********
  • 33.091
  • 198
    • Se proprio non hai un cazzo da fare...
Re:I nostri script
« Risposta #2 il: 30 Maggio 2019, 10:28:43 »
Uso questo script per montare una cartella remota tramite SSH.
Interfaccia Zenity
Bisogna usare una chiave abilitata dal server.

Codice: [Seleziona]
#!/bin/bash

# Configuration
REMOTE_USER="admin"
REMOTE_IP="11.22.33.44"
REMOTE_PORT="22"
REMOTE_FOLDER="/data"
LOCAL_FOLDER="/mnt/nas_remoto"
LOCAL_KEY="~/.ssh/chiavi/nas_remoto" # Create key with ssh-keygen

# Messages
CONNECTION_NAME="NAS Remoto"
QUESTION_CONNECT="Vuoi connetterti al NAS Remoto?"
QUESTION_DISCONNECT="Il NAS Remoto è già connesso.\n\nVuoi disconnetterti?"
WAIT_CONNECTION="Connessione su NAS Remoto..."
WAIT_DISCONNECTION="Chiusura connessione su NAS Remoto..."
INFO_CONNECTION_OK="Connessione stabilita con successo!"
INFO_CONNECTION_KO="Errore di connessione"
INFO_DISCONNECTION_OK="Connessione chiusa correttamente"
INFO_DISCONNECTION_KO="Errore durante la chiusura della connessione"

PARAMS=$*

function main()
{
  if [[ ${PARAMS[0]} == "autostart" ]];then
    `silent_connection`
  else
    `manage_connection`
  fi
}

function silent_connection()
{
  if [[ `check_connection` == false ]]; then
    `start_connection`
  fi
}

function manage_connection()
{
  if [[ `check_connection` == false ]]; then
    zenity --title="${CONNECTION_NAME}" --question --text="${QUESTION_CONNECT}"
    if [[ $? == 0 ]]; then
      `zen_start_connection`
    fi
  else
    zenity --title="${CONNECTION_NAME}" --question --text="${QUESTION_DISCONNECT}"
    if [[ $? == 0 ]]; then
      `zen_stop_connection`
    fi
  fi
}

# Check if the connection exists
function check_connection()
{
  COUNT_CONNECTION=`df -h | grep ${REMOTE_USER}@${REMOTE_IP} | grep -c "${LOCAL_FOLDER}"`
  if [[ ${COUNT_CONNECTION} == 1 ]]; then
    echo true
  else
    echo false
  fi
}

function start_connection()
{
  sshfs ${REMOTE_USER}@${REMOTE_IP}:${REMOTE_FOLDER} "${LOCAL_FOLDER}" -p ${REMOTE_PORT} -o IdentityFile="${LOCAL_KEY}"
}

function stop_connection()
{
  gksudo umount "${LOCAL_FOLDER}"
}


function zen_start_connection()
{
  (`start_connection`) | zenity --title="SSH @ ${CONNECTION_NAME}" --progress --pulsate --auto-close --text="${WAIT_CONNECTION}"
 
  if [[ `check_connection` == true ]]; then
    zenity --title="SSH @ ${CONNECTION_NAME}" --info --text="${INFO_CONNECTION_OK}"
  else
    zenity --title="SSH @ ${CONNECTION_NAME}" --info --text="${INFO_CONNECTION_KO}"
  fi
}

function zen_stop_connection()
{
  (`stop_connection`) | zenity --title="SSH @ ${CONNECTION_NAME}" --progress --pulsate --auto-close --text="${WAIT_DISCONNECTION}"
 
  if [[ `check_connection` == false ]]; then
    zenity --title="SSH @ ${CONNECTION_NAME}" --info --text="${INFO_DISCONNECTION_OK}"
  else
    zenity --title="SSH @ ${CONNECTION_NAME}" --info --text="${INFO_DISCONNECTION_KO}"
  fi
}

main

Chi preferisce QT, può utilizzare Qarma al posto di Zenity.

EDIT:
Cosa moto importante! Crea questo file sul client per mantenere la connessione attiva. Di default i server SSH effettuano le disconnessioni automaticamente. È una brutta cosa quando stai lavorando e sei costretto a riconnetterti ripetutamente... e magari devi forzare la chiusura di una connessione fantasma.
Codice: ~/.ssh/config [Seleziona]
Host *
  ServerAliveInterval 60
« Ultima modifica: 30 Maggio 2019, 12:12:59 da TonyWhite »

*

Offline TonyWhite

  • Apostolo dello SPAM
  • ********
  • 33.091
  • 198
    • Se proprio non hai un cazzo da fare...
Re:I nostri script
« Risposta #3 il: 20 Aprile 2020, 15:21:22 »
Aggiungo due comandi per chiarire il commento "Create key with ssh-keygen" che ho scritto nel post precedente.
Una volta creata la chiave, il server deve anche riconoscerla, altrimenti il client può provare all'infinito senza risultato! :asd:

Apri il terminale, entra nella cartella ~/.ssh e crea la chiave
Codice: [Seleziona]
ssh-keygen
Ti chiederà:
  • Dove salvare le chiavi
  • Quale nome dare alle chiavi
  • Quale password utilizzare: è una password per poter usare la chiave. Non è la password di accesso all’account e non devi inserire quella! Se lasci il campo vuoto, potrai fare il login con la chiave senza scrivere la password.
È stata creata una coppia di chiavi: una pubblica e una privata.

Ora devi registrare la chiave pubblica sul server
Codice: [Seleziona]
ssh-copy-id -i mykey.pub [email protected]

Nota
Questa operazione, solitamente, è di competenza esclusiva dell'amministratore del server.

*

Offline TonyWhite

  • Apostolo dello SPAM
  • ********
  • 33.091
  • 198
    • Se proprio non hai un cazzo da fare...
Re:I nostri script
« Risposta #4 il: 27 Maggio 2020, 17:36:20 »
Stavo mettendo mani al server dell'ufficio, quando mi imbatto in una cosa che bla bla bla, arrivo subito al dunque :asd:

Nei miei script voglio usare "sudo" senza usare il terminale.

(click to show/hide)

(click to show/hide)

Questo script funge da GUI per sudo.
Codice: "/usr/bin/zen-sudo" [Seleziona]
#!/bin/bash
zenity --password --title="ZEN Security"


Questo script chiede la password e si avvia come root solo se la password è corretta.
Come vedete, è tutto commentato e potete adattarlo al volo.
Codice: [Seleziona]
#!/bin/bash

# DEPENDENCIES
# coreutils
# sudo
# zenity
# zen-sudo (simple script)

function main()                                                                                    # Main function
{
  zenity --info --ellipsize --text="I am `whoami`\nand the script works flawlessly"                # Change it with your code
}

if [[ "`whoami`" == "root" ]]; then                                                                # I am root?
  main                                                                                             # YES! Start main function with root permissions!
else                                                                                               # NO? In this case...
  export SUDO_ASKPASS="/usr/bin/zen-sudo"                                                          # Define Zenity for sudo GUI
  REALPATH="$(realpath "$0")"                                                                      # Know yourself
  sudo -A "${REALPATH}"                                                                            # Launch itself with sudo (and ask password with Zenity if need)
  SUCCESS="$?"                                                                                     # Read result of sudo: 0 should be great
  if [[ "${SUCCESS}" != "0" ]]; then                                                               # If wrong with sudo...
    zenity --error --ellipsize --title="Something" --text="Can't execute Something"                # Show message.
  else                                                                                             # And if no problems...
    zenity --info --ellipsize --title="Something" --text="I am `whoami`\nand script has ended"     # Show another message.
  fi
fi
Ora sono pronto per usare "sudo" con Zenity sul server di lavoro senza il timore che un aggiornamento (o cambio di DE) possa impedirne il corretto funzionamento.

EDIT:
Ho aggiornato il secondo script. Ora sono consentiti i nomi con gli spazi.

EDIT 2
Sto modificando tutto per fare un unico script. Sarà semplice da usare come il vecchio gksudo, ma con delle migliorie.
« Ultima modifica: 28 Maggio 2020, 10:34:51 da TonyWhite »