Torna indietro   Hardware Upgrade Forum > Software > Linux, Unix, OS alternativi

Redmi Pad 2 9.7: ampio display, economico e peso contenuto, ma qualche limite nelle prestazioni
Redmi Pad 2 9.7: ampio display, economico e peso contenuto, ma qualche limite nelle prestazioni
Redmi Pad 2 9.7 punta su un display ampio e fluido, una batteria capace di accompagnare l'uso quotidiano senza ansie da ricarica e un prezzo accessibile, a partire da 179,90 euro per la versione con 64 GB di storage. Lo Snapdragon 6s 4G Gen 2 e i 4 GB di RAM della configurazione più diffusa frenano però chi cerca reattività e multitasking spinto: ecco il bilancio dopo due settimane di prova diretta
Peugeot Polygon Concept: ecco il futuro delle utilitarie
Peugeot Polygon Concept: ecco il futuro delle utilitarie
Polygon è la concept car di Peugeot che mostra il futuro delle soluzioni del segmento B: tra design compatti e innovativi affiancati da dimensioni compatte uno scherzo dalla manovrabilità incredibile per le manovre a bassa velocità
Reno16 Pro: il compatto di OPPO punta su fotocamera da 200MP e il nuovo Bubble! La recensione
Reno16 Pro: il compatto di OPPO punta su fotocamera da 200MP e il nuovo Bubble! La recensione
OPPO ha portato in Italia, dal 1° luglio 2026, Reno16 Pro: display AMOLED da 6,32 pollici a 144Hz, tripla fotocamera con sensore principale da 200 megapixel, chip Dimensity 8550 Super e batteria da 6000mAh, al prezzo di lancio di 899 euro. Lo abbiamo provato per due settimane insieme al nuovo accessorio Bubble, per capire se la formula compatta della serie regge ancora di fronte a un listino da 1099 euro
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 19-11-2005, 11:41   #1
Herod2k
Senior Member
 
L'Avatar di Herod2k
 
Iscritto dal: Jan 2005
Città: Roma
Messaggi: 4870
Domande su Bash Script, PostFix e crontab.

Ciao Ragazzi, avrei bisogno di alcuni chiarmenti e mi piacerebbe sapere cosa ne pensate del mio primo bash script
(non ci andate troppo pesanti)

Allora mi è stato chiesto da un'ufficio di fare in modo che le passwords degli utenti samba (macchine windows) cambino ogni mese, io non posso ogni mese andare in questo ufficio a cambiare le passwords, incitato da Pardo in un altro 3ad mi sono scritto un piccolo script.
Il seguente script genera passwords alfabetiche di 8 caratteri (minuscoli), le stampa tramite la stampante attaccata allla macchina linux (Debian) e le manda via e-mails all'amministratore dell'ufficio che le distribuirà ai dipendenti.
Il tutto deve succedere una volta al mese (userò il crontab).

Questo è lo script, premetto che gli utenti hanno tutti lo stesso nome e varia solo dal numero dal numero finale (Ufficio1, Ufficio2, Ufficio3, etc etc):
Codice:
#!/bin/bash

#************************************************#
#                passwords.sh                    #
#           scritto da Herod De Vil              #
#              17 Novembre 2005                  #
#                                                #
#      Cambio passwords in modo generico 	 #
#		agli utenti Samba	         #
#************************************************#

#Parametri
LETTERE=8
MODULO=25
UTENTI=4
NOMEUTENTE=Ufficio
DATA=$(date)
MESECORRENTE=$(date +%B)
ANNOCORRENTE=$(date +%Y)
[email protected]
[email protected]

# pulitura schermo
clear

# Calcolo passwords
for ((b=1; b <= $UTENTI; b++))
  do
   password=""
   for ((a=1; a <= $LETTERE; a++))
     do
      let "lettera = $RANDOM % $MODULO + 97"
      OCTAL=$(printf %o $lettera)
      RESULT=$(printf \\$OCTAL)
      password=$password$RESULT
     done
    passwords[$b]=$password
    smbpasswd -U $NOMEUTENTE$b -w $password #cambio password
  done

# Scrittura delle passwords sul file passwords.txt
testo='Passwords emesse il '$DATA' valide per tutto il mese corrente ('$MESECORRENTE' '$ANNOCORRENTE').\n'
for ((b=1; b <= $UTENTI; b++))
  do
  testo=$testo'------------------------------------\n'
  testo=$testo$NOMEUTENTE$b' = '${passwords[$b]}'\n'
  done
testo=$testo'------------------------------------\n'
echo -e $testo > passwords.txt

# Stampa le passwords dalla stampante impostata
lpr -T "Accounts Ufficio" passwords.txt

# Elimina il file con le passwords 
rm passwords.txt

# Invio e-mail con i codici
echo -e $testo | mail -s "Accounts Ufficio" -b $BCC $TO

# Messaggio di conferma
echo 'Cambio effettuato '$MESECORRENTE' '$ANNOCORRENTE
Sono sicuro che ci siano modi più puliti per scrivere questo codice,ma non ho trovato dei manuali decenti (almeno secondo me) on-line.

Il file passwords.sh ha i pemessi di esecuzione e lettura solo da root quindi con "visudo" ho aggiunto
Codice:
Cmnd_Alias SCRIPT=/usr/local/bin/passwords.sh
Server   ALL=SCRIPT,NOPASSWD: ALL
Ho aggiunto a /etc/crontab
Codice:
30     11     1     *     *         sudo /usr/local/bin/passwords.sh
per eseguire il comando ogni primo del mese alle 11:30 (cosi sono sicuro che c'è qualcuno in ufficio)

Domande:
  1. Sulla mia macchina per fare le prove ho installato Postfix, quando invio le emails con echo -e $testo | mail -s "Accounts Ufficio" -b $BCC $TO le emails su alcuni domini arrivano su altri no, per esempio su tiscali non arivano, su gmail si, è possibile che Tiscali me le filtri come spam perché arrivano come "[email protected]"? Posso impostare il from in modo diverso per fare delle prove?se si, come? Qualche altra idea sul perchè non mi arrivano? il syslog dice "sent"
  2. In questo ufficio i clients vengono spenti il sabato e la domenica e le stampanti vengono spente, e la linea telefonica viene staccata, però il server rimane acceso (nessuno si azzarda a toccarlo), se il primo del mese capita di sabato o domenica, il server cambia le passwords ai clients e non vengono comunicati i cambiamenti, le cose sono2:
    1. Gli faccio spegnere il server
    2. Gli faccio lasciare accese almeno la stampante (di rete)
    3. E' possibile far slittare con cron al primo giorno utile lavorativo, in caso se il giorno capiti di sabato o domenica? Magari dirgli di farlo ogni primo lunedì del mese? Ogni suggerimento è bene accetto.
Herod2k è offline   Rispondi citando il messaggio o parte di esso
Old 19-11-2005, 16:34   #2
kingv
Senior Member
 
L'Avatar di kingv
 
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
Sulla 1) non so aiutarti, sulla 2) per inviare la mail solo in un giorno lavorativo devo scriverti un tuo script perchè il sistema non conosce il calendario delle festività italiane


Se ti accontenti di ogni primo lunedì del mese puoi inserire in crontab:

0 7 1-7 * * [ `/bin/date +%A` = Monday ] && /tuo/path/passwords.sh

Ultima modifica di kingv : 19-11-2005 alle 17:37.
kingv è offline   Rispondi citando il messaggio o parte di esso
Old 19-11-2005, 19:56   #3
gurutech
Senior Member
 
L'Avatar di gurutech
 
Iscritto dal: Jun 2000
Città: S.Giuliano (MI)
Messaggi: 1047
Quote:
Originariamente inviato da Herod2k
Ciao Ragazzi, avrei bisogno di alcuni chiarmenti e mi piacerebbe sapere cosa ne pensate del mio primo bash script
(non ci andate troppo pesanti)

Domande:
  1. Sulla mia macchina per fare le prove ho installato Postfix, quando invio le emails con echo -e $testo | mail -s "Accounts Ufficio" -b $BCC $TO le emails su alcuni domini arrivano su altri no, per esempio su tiscali non arivano, su gmail si, è possibile che Tiscali me le filtri come spam perché arrivano come "[email protected]"? Posso impostare il from in modo diverso per fare delle prove?se si, come? Qualche altra idea sul perchè non mi arrivano? il syslog dice "sent"
  2. In questo ufficio i clients vengono spenti il sabato e la domenica e le stampanti vengono spente, e la linea telefonica viene staccata, però il server rimane acceso (nessuno si azzarda a toccarlo), se il primo del mese capita di sabato o domenica, il server cambia le passwords ai clients e non vengono comunicati i cambiamenti, le cose sono2:
    1. Gli faccio spegnere il server
    2. Gli faccio lasciare accese almeno la stampante (di rete)
    3. E' possibile far slittare con cron al primo giorno utile lavorativo, in caso se il giorno capiti di sabato o domenica? Magari dirgli di farlo ogni primo lunedì del mese? Ogni suggerimento è bene accetto.
non si finisce mai di imparare. non sapevo che ci fosse la var $RANDOM
ad ogni modo per la generazione della password ti consiglio pwgen, così semplifichi molto lo script.
ho scritto anch'io diversi script di shell e ti do' un consiglio: usa le funzioni e l'inclusione da file esterno per spezzare il codice ed aumentarne la leggibilità anche nel codice breve, ma che pensi possa crescere nel tempo.
per quanto riguarda il problema 1
echo "pippo" | mail -a "From: [email protected]" -s "pluto" [email protected]
problema 2:
non dovrebbe sussistere, in quando il server si tiene tutto in coda (mail e stampa) e dovrebbe sputarlo fuori quando sente la connessione (al max aumenta il tempo di permanenza in coda di postfix).
una soluzione che ho applicato in casi del genere è scegliere una macchina che è necessariamente accessa quando qualcuno è in ufficio, e implementare uno script di "ping di sopravvivenza": se non riesci a pingarla più di N volte la macchina linux va in shutdown (magari puoi aggiungere la condizione che sia una certa ora). se poi dal bios del PC imposti l'accensione alle 6/7 del mattino non si accorgono di nulla e così facendo hai allungato sensibilmente la vita di un povero server
__________________
“No te tomes tan en serio la vida, al fin y al cabo no saldrás vivo de ella”
gurutech è offline   Rispondi citando il messaggio o parte di esso
Old 19-11-2005, 20:02   #4
gurutech
Senior Member
 
L'Avatar di gurutech
 
Iscritto dal: Jun 2000
Città: S.Giuliano (MI)
Messaggi: 1047
per farti capire cosa intendevo prima, guarda questo:
quello che interessa di più, cioè il primo, si commenta praticamente da solo
script vpnuptime
Codice:
#!/bin/sh
. /etc/openvpn/tdbshtool

NOW=$(date +"%d-%m-%y;%H:%M")

case "$script_type" in
client-connect)
  if ( ! inserttdb "$username" "$NOW" ); then {
        INVPN=$(showtdb "$username")
        UNKNOWN=$(date +"%d-%m-%y;scon")
        logger -p daemon.info "openvpn-uptime $username;$INVPN;$UNKNOWN"
        storetdb "$username" "$NOW"
  }
  fi
  ;;
client-disconnect)
  INVPN=$(showtdb "$username")
  logger -p daemon.info "openvpn-uptime $username;$INVPN;$NOW"
  deletetdb "$username"
  ;;
*)
  echo "Errore: devi chiamare questo script da OpenVPN"
  exit 1
  ;;
esac
codice /etc/openvpn/tdbshtool
Codice:
TDBTOOL="/usr/bin/tdbtool"
DATABASE="/etc/openvpn/clients.tdb"

if [ ! -e "$TDBTOOL" ]; then {
  echo "Cannot find tdbtool"
  exit 1
}
fi

if [ ! -e "$DATABASE" ]; then {
  echo "Cannot find database"
  exit 1
}
fi

function showtdb() {

if ( echo "show $1" | tdbtool "$DATABASE" | grep failed 2> /dev/null &> /dev/null ); then {
  return 1
}
else {
  echo "show $1" | tdbtool "$DATABASE" | grep -A1 data | tail +2 | head -n1 | \
        cut -d \* -f 2 | tr -d " "
  return 0
}
fi

}

function inserttdb() {

if ( echo "insert $1 *$2" | tdbtool "$DATABASE" | grep failed 2> /dev/null &> /dev/null ); then {
  return 1
}
else {
  return 0
}
fi

}

function storetdb() {

if ( echo "store $1 *$2" | tdbtool "$DATABASE" | grep failed 2> /dev/null &> /dev/null ); then {
  return 1
}
else {
  return 0
}
fi

}

function deletetdb() {

if ( echo "delete $1" | tdbtool "$DATABASE" | grep failed 2> /dev/null &> /dev/null ); then {
  return 1
}
else {
  return 0
}
fi

}
__________________
“No te tomes tan en serio la vida, al fin y al cabo no saldrás vivo de ella”
gurutech è offline   Rispondi citando il messaggio o parte di esso
Old 19-11-2005, 20:09   #5
h1jack3r
Senior Member
 
L'Avatar di h1jack3r
 
Iscritto dal: May 2002
Città: somewhere in Europe
Messaggi: 2554
Ciao,
se vuoi qu ci sono guide che sembrano ben fatte per shell e awk. Se devi trattare i file di testo ti consiglio awk che è + facile che la shell ed è molto C like.
Lo script l'ho letto veloce ma tutte le varie funzioni per gestire stampanti e email non le conosco quindi non ti posso essere di aiuto, però il resto mi sembra scritto bene, anceh se non è "elegante" come magari si potrebbe fare è scritto in maniera comprensibile il che è mooolto meglio!
h1jack3r è offline   Rispondi citando il messaggio o parte di esso
Old 20-11-2005, 09:19   #6
Herod2k
Senior Member
 
L'Avatar di Herod2k
 
Iscritto dal: Jan 2005
Città: Roma
Messaggi: 4870
Grazie ragazzi,

grazie per la mano che mi avete dato, visto che domani devo andare in fufficio a inserire lo script sul server penso che per il problema 2 opterò per la soluzione di kingv, il primo lunedì del mese.
Codice:
30 11 1-7 * * [ `/bin/date +%A` = lunedì ] &&sudo /usr/local/bin/passwords.sh
appena ho un secondo di tempo cercherò di implementare uno script come quello di gurutech (ping di sopravvivenza), c'è sempre la possibilità che un lunedì l'ufficio sia chiuso per qualche strano motivo.
Quote:
Originariamente inviato da gurutech
non dovrebbe sussistere, in quando il server si tiene tutto in coda (mail e stampa) e dovrebbe sputarlo fuori quando sente la connessione (al max aumenta il tempo di permanenza in coda di postfix).
Non sono praticissimo di Postfix, dove lo trovo questo parametro?

Tornando invece al problema 1 anche scrivendo:
Codice:
echo "pippo" | mail -a "From: [email protected]" -s "pluto" [email protected]
sul mio account di posta di tiscali non arrivano le e-mail, e su gmail si.
Non compaiono neanche tra lo spam
Avete qualche idea?

Grazie ancora per l'aiuto.

H2K

Ultima modifica di Herod2k : 20-11-2005 alle 09:45.
Herod2k è offline   Rispondi citando il messaggio o parte di esso
Old 20-11-2005, 09:42   #7
kingv
Senior Member
 
L'Avatar di kingv
 
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
occhio, nal campo "giorno del mese" ci devi mettere 1-7, non 1-6.
Se il primo del mese è martedì il primo lunedì del mese è il 7
kingv è offline   Rispondi citando il messaggio o parte di esso
Old 20-11-2005, 09:45   #8
Herod2k
Senior Member
 
L'Avatar di Herod2k
 
Iscritto dal: Jan 2005
Città: Roma
Messaggi: 4870
Quote:
Originariamente inviato da kingv
occhio, nal campo "giorno del mese" ci devi mettere 1-7, non 1-6.
Se il primo del mese è martedì il primo lunedì del mese è il 7
è vero...ora edito.
Herod2k è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Redmi Pad 2 9.7: ampio display, economico e peso contenuto, ma qualche limite nelle prestazioni Redmi Pad 2 9.7: ampio display, economico e peso...
Peugeot Polygon Concept: ecco il futuro delle utilitarie Peugeot Polygon Concept: ecco il futuro delle ut...
Reno16 Pro: il compatto di OPPO punta su fotocamera da 200MP e il nuovo Bubble! La recensione Reno16 Pro: il compatto di OPPO punta su fotocam...
 Hisense 55U7SE: tuttofare e accessibile, il MiniLED per film, sport e gioco Hisense 55U7SE: tuttofare e accessibile, il Min...
Kindle Scribe Colorsoft: riduce le cornici e diventa a colori, ma il prezzo è alto Kindle Scribe Colorsoft: riduce le cornici e div...
Polar Vantage V2, prezzo crollato: lo sp...
Xbox copia la strategia PlayStation: esc...
Il Tribunale UE dice no ad Apple: iOS e ...
Netflix ha un problema con le seconde st...
La fusione nucleare potrebbe aver trovat...
Le 10 offerte TOP Amazon di oggi, aggior...
La NASA prepara il lancio di Roman: il t...
Proton 11.0-1 su SteamOS: Resident Evil,...
Allarme rosso per il Wi-Fi: questi 5 rou...
9 portatili con sconti veri su Amazon, s...
Cambiano i numeri di telefono! Se vedi q...
Android Auto e CarPlay wireless a 19€, c...
Grok 4.5, il modello "di classe Opu...
Obsidian: Avowed 2 accantonato per svilu...
NVIDIA, gli ingegneri non programmano pi...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 10:09.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v