Category: bash

Aggiornamento costante e automatico di data e ora su macchine linux

Il file in allegato è un semplice script bash che corregge data e ora di macchine linux (i percorsi degli eseguibili sono presi da una Debian Etch).

Prerequisiti

  • ntpdate: apt-get install ntpdate
  • ntpd stopped: se sul server c’è un demone ntp attivo, probabilmente questo script è inutile
  • porta 123 (UDP) aperta
  • permessi utente: l’utente che lancia lo script deve avere i permessi di modifica all’orologio di sistema

Keep the time and date of your Linux box always up to date

The attached file is a simple bash script, to correct the date and time of your linux box (binaries paths are relative to a Debian Etch).

Prerequisites

  • ntpdate: apt-get install ntpdate
  • ntpd stopped: if you have a ntp daemon running you don’t need this script
  • port 123 (UDP) opened
  • user permission: the user that run the script must have the permission to set up the clock

What the script does

Un semplice trova e sostituisci con perl

Se state cercando un modo semplice di trovare e sostituire stringhe in diversi file di testo (php script, bash script, perl script o semplicemente testi) utilizzando un solo comando, quello che segue potrebbe essere il più semplice:

find . -name ‘[PATTERN]’ |xargs perl -pi -e ‘s/[NEEDLE]/[REPLACESTR]/g’

Ad esempio se siete nella cartella dove abitualmente salvate i vostri script di avviso, che inviano mail al presentarsi di certe condizioni, e volete sostituire il vostro vecchio indirizzo email con il nuovo potete digitare

Easy find and replace with perl

If you need an easy way to find and replace a string in one or more text files (php script, bash script, perl script or just text) using only a command, may be that the following is the easiest way:

find . -name ‘[PATTERN]’ |xargs perl -pi -e ‘s/[NEEDLE]/[REPLACESTR]/g’

Example: if you are in the folder where you usually store you alert script, that send email on certain events, and you want to replace the previous email with the new one you can type

find . -name ‘*.php’ |xargs perl -pi -e ‘s/oldemail@domain.tld/newemail@domain.tld/g’

DONE!

Error: Argument list too long

Using linux shell commands such as cp, mv, rm you could encounter the following error message:

/bin/cp: Argument list too long.

Obviously you can modify system settings and increase the max number of files, but an easyer solution is using the find command.

Example: to remove a great number of temporary files in a folder, all with the ‘.dieg’ extension , try this (or something similar!):

find ./ -name ‘*.dieg’ -exec rm -r -v {} \;

BASH: bad interpreter: No such file or directory

If you are getting this error message from a linux shell

bad interpreter: No such file or directory

over and over again, may be a “path” variable setting mistake, that is the correct interpreter (e.g. bash) can’t be found and you have to specify the full path. Else the script file has been witten on a win32 machine, so the “end of line” character is ‘\r\n‘ rather than ‘\n‘.

If this last case, you can solve the problem editing the script file with “vim” and digiting:

:set fileformat=unix

and finally to save:

Script per conservare gli n file più recenti in una dir

Mi è capitato di voler tenere traccia di operazioni effettuate da script con dei file di log. Se si chiama il file di log con un nome tipo anno-mese-giorno (es:script1_AAAAMMGG.log) il numero di log cresce continuamente.

Con questo script che lancio periodicamente, vengono conservati i solo gli ultimi n file più nuovi.

Utilizzo:
keepnewestonly.sh [directory to check] [opt:maxnum] [opt:filepattern] [opt:T (testonly)]

dove

  • il primo parametro è la directory in cui effettuare la pulizia
  • il secondo (opzionale, default =20) è il numero di file che si vogliono conservare