Libertà vo cercando, ch'è sì cara, come sa chi per lei vita rifiuta

Categoria: linux

Connect to an external service on a different AKS cluster through private network

My goal is to call a service on an AKS cluster (aks1/US) from a pod on a second AKS cluster (aks2/EU).
These clusters will be on different regions and should communicate over a private network.

For the cluster networking I’m using the Azure CNI plugin.

Above you can see a schema of the two possible ending architectures. ExternalName  or ExternalIP  service on the US AKS pointing to a private EU ingress controller IP.

So, after some reading and some video listening, it seemed for me that the best option was to use an externalName service on AKS2 calling a service defined in a custom private DNS zone (ecommerce.private.eu.dev), being these two VNets peered before.

Address space for aks services:
dev-vnet  10.0.0.0/14
=======================================
dev-test1-aks   v1.22.4 - 1 node
dev-test1-vnet  11.0.0.0/16
=======================================
dev-test2-aks   v1.22.4 - 1 node
dev-test2-vnet  11.1.0.0/16 

After some trials I can get connectivity between pods networks but I was never able to reach the service network from the other cluster.

  • I don’t have any active firewall
  • I’ve peered all three networks: dev-test1-vnet, dev-test2-vnet, dev-vnet (services CIDR)
  • I’ve create a Private DNS zones private.eu.dev where I’ve put the “ecommerce” A record (10.0.129.155) that should be resolved by the externalName service

dev-test1-aks (EU cluster):

kubectl create deployment eu-ecommerce --image=k8s.gcr.io/echoserver:1.4 --port=8080 --replicas=1

kubectl expose deployment eu-ecommerce --type=ClusterIP --port=8080 --name=eu-ecommerce

kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.1.1/deploy/static/provider/cloud/deploy.yaml

kubectl create ingress eu-ecommerce --class=nginx --rule=eu.ecommerce/*=eu-ecommerce:8080

This is the ingress rule:

❯ kubectl --context=dev-test1-aks get ingress eu-ecommerce-2 -o yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: eu-ecommerce-2
  namespace: default
spec:
  ingressClassName: nginx
  rules:
  - host: lb.private.eu.dev
    http:
      paths:
      - backend:
          service:
            name: eu-ecommerce
            port:
              number: 8080
        path: /ecommerce
        pathType: Prefix
status:
  loadBalancer:
    ingress:
    - ip: 20.xxxxx

This is one of the externalName I’ve tried on dev-test2-aks:

apiVersion: v1
kind: Service
metadata:
  name: eu-services
  namespace: default
spec:
  type: ExternalName
  externalName: ecommerce.private.eu.dev
  ports:
    - port: 8080
      protocol: TCP

These are some of my tests:

# --- Test externalName 
kubectl --context=dev-test2-aks run -it --rm --restart=Never busybox --image=gcr.io/google-containers/busybox -- wget -qO- http://eu-services:8080
: '
    wget: cant connect to remote host (10.0.129.155): Connection timed out
'

# --- Test connectivity AKS1 -> eu-ecommerce service
kubectl --context=dev-test1-aks run -it --rm --restart=Never busybox --image=gcr.io/google-containers/busybox -- wget -qO- http://eu-ecommerce:8080
kubectl --context=dev-test1-aks run -it --rm --restart=Never busybox --image=gcr.io/google-containers/busybox -- wget -qO- http://10.0.129.155:8080
kubectl --context=dev-test1-aks run -it --rm --restart=Never busybox --image=gcr.io/google-containers/busybox -- wget -qO- http://eu-ecommerce.default.svc.cluster.local:8080
kubectl --context=dev-test1-aks run -it --rm --restart=Never busybox --image=gcr.io/google-containers/busybox -- wget -qO- http://ecommerce.private.eu.dev:8080
# OK client_address=11.0.0.11

# --- Test connectivity AKS2 -> eu-ecommerce POD
kubectl --context=dev-test2-aks run -it --rm --restart=Never busybox --image=gcr.io/google-containers/busybox -- wget -qO- http://11.0.0.103:8080
#> OK


# --- Test connectivity - LB private IP
kubectl --context=dev-test1-aks run -it --rm --restart=Never busybox --image=gcr.io/google-containers/busybox -- wget --no-cache -qO- http://lb.private.eu.dev/ecommerce
#> OK
kubectl --context=dev-test2-aks run -it --rm --restart=Never busybox --image=gcr.io/google-containers/busybox -- wget --no-cache -qO- http://lb.private.eu.dev/ecommerce
#> KO  wget: can't connect to remote host (10.0.11.164): Connection timed out
#>> This is the ClusterIP! -> Think twice!


# --- Traceroute gives no informations
kubectl --context=dev-test2-aks  run -it --rm --restart=Never busybox --image=gcr.io/google-containers/busybox -- traceroute -n -m4 ecommerce.private.eu.dev
: '
    *  *  *
    3  *  *  *
    4  *  *  *
'

# --- test2-aks can see the private dns zone and resolve the hostname
kubectl --context=dev-test2-aks run -it --rm --restart=Never busybox --image=gcr.io/google-containers/busybox -- nslookup ecommerce.private.eu.dev
: ' Server:    10.0.0.10
    Address 1: 10.0.0.10 kube-dns.kube-system.svc.cluster.local
    Name:      ecommerce.private.eu.dev
    Address 1: 10.0.129.155
'

I’ve also created inbound and outbound network policies for the AKS networks:

  • on dev-aks (10.0/16) allow all incoming from 11.1/16 and 11.0/16
  • on dev-test2-aks allow any outbound

SOLUTION: Set the LB as an internal LB exposing the external IP to the private subnet

kubectl --context=dev-test1-aks patch service -n ingress-nginx ingress-nginx-controller --patch '{"metadata": {"annotations": {"service.beta.kubernetes.io/azure-load-balancer-internal": "tr
ue"}}}'

This article is also in Medium 🙂


Seen docs:

Recuperare un hard disk corrotto (e i suoi dati)

Error mounting: mount: wrong fs type, bad option, bad superblock on /dev/sdb1,
       missing codepage or helper program, or other error
       In some cases useful info is found in syslog – try
       dmesg | tail  or so

Non è mai bello trovarsi di fronte un errore simile, vediamo subito che si può fare..

Dando dmesg | tail otteniamo qualche informazione, più che altro la conferma della possibilità che il nostro ‘superblocco o la tavola delle partizioni siano corrotti‘.

Il primo tentativo è una riparazione tramite fsck, che però nel mio caso non ha dato risultati :
(provare anche con e2fsck -p /dev/device )

sabayon alex # fsck /dev/sdb1
fsck from util-linux-ng 2.18
e2fsck 1.41.12 (17-May-2010)
La dimensione del filesystem (secondo il superblocco) è 116736000 blocco(i)
La dimensione fisica del device è 116735992 blocco(i)
È probabile che il superblocco o la tavola delle partizioni siano corrotti!
Annulla? no

/dev/sdb1 contiene un filesystem con errori, controllo forzato.
Passo 1: Controllo di inode, blocco(i) e dimensioni
Passo 2: Analisi della struttura delle directory
Passo 3: Controllo della connettività di directory
Pass 4: Controllo del numero dei riferimenti
Pass 5: Checking gruppo summary information
/dev/sdb1: 18170/29188096 files (35.3% non-contiguous), 62000359/116736000 blocks

Il secondo passo è quello delle imprecazioni.

Il terzo, invece, è una scelta: possiamo cercare di recuperare direttamente la partizione o cercare invece prima di recuperare i dati.
Procedendo con la massima cautela, andiamo prima a vedere se i nostri dati sono ancora accessibili in qualche modo.
Sì.

Utilizziamo il fantastico debugfs, che ci permette di accedere anche a filesystem corrotti, sia in modalità lettura/scrittura, che in readonly per i casi più disperati.

Quello che voglio fare io è recuperare la mia cartella di Musica e Immagini, per cui darò questo comando

sabayon alex # debugfs -w /dev/sdb1
debugfs 1.41.12 (17-May-2010)
debugfs: help
debugfs: ls
debugfs: rdump Musica /media/2E78ED3D78ED0485/Musica

Prima controllo con help la lista di comandi disponibili, poi con ls la struttura delle cartelle nel mio hard-disk; rdump copia ricorsivamente i file, Musica rappresenta la cartella da copiare, e l’indirizzo successivo è ovviamente quello di destinazione.
Se non funziona l’opzione -w tentare con -c .

E voilà! Avrete recuperato i vostri file apparentemente inaccessibili !

Una volta fatto ciò potete/dovete ripristinare la correttezza del filesystem.

Se, come nel mio caso, è un problema di superblocco potete evitare di formattarlo dando il comando: mke2fs -S /dev/sdb1 che si occupa appunto di ripristinare solo il superblocco, con qualche possibilità quindi che i vostri file rimangano intatti ! (si parla sempre di un file system di tipo EXT !! )

Se questo non funziona, non vi resta che restaurare la partizione sempre con mke2fs, nel caso vogliate un fs ext4 :

mkfs.ext4 /dev/device

Fatto ?

gajim : libertà, sicurezza e velocità

Approfitto di questo periodo in cui l’accesso a msn è impossibilitato a causa dei loro fantastici server, per scrivere quattro righe su quello che ritengo sia un ottimo programma di messagistica instantanea e su una sua funzione in particolare: la crittazione delle conversazioni.

Infatti, come ho già spiegato in questo articolo, credo proprio che la semplicità di configurazione in relazione all’effetto ottenuto, valga due minuti del vostro prezioso tempo.

Strumenti necessari: 

Tempo Stimato per eccesso: 5 min.

Aprite gajim, createvi un account jabber (xmpp) se non lo avete già, andate in Modifica-> Accounts -> informazioni personali -> scegli chiave, ora selezionate quella che avete precedentemente creato e deselezionate Use pgp Agent, altrimenti non vi chiederà la vostra passphrase all’accesso, rendendo impossibile il calcolo della vostra chiave privata.
Ora, una volta aggiunto il contatto di un vostro amico che abbia fatto lo stesso procedimento,  una volta in chat non vi resta che spuntare l’opzione presente sotto la finestra di conversazione e.. le jeux sont fait !

Se voleste aggiungermi, il mio contatto è nella colonna a destra (di qua ->) .

Perché ho scelto GNU/Linux

Attenzione: questo articolo contiene lunghe ed inutili digressioni.

L’inutile premessa:
Esistono centinaia di articoli sul perché preferire GNU/linux a sistemi Mac e Windows (soprattutto), ma a parte le pagine dei fan boy, di solito gli articoli vengono scritti appositamente per attirare nuovi utenti neofiti, perdendo così di soggettività ed andando ad elencare le solite caratteristiche (per quanto ottime) del sistema, anche se poi per l’utente queste non hanno quasi alcuna rilevanza.
Questo articolo è scritto da un punto di vista prettamente personale (come gli altri d’altronde 🙂 senza lo scopo do convincere nessuno: ho smesso le mie crociate accalappia utenti win tempo fa, infrangendomi continuamente sul muro della chiusura mentale, una volta indicata a soglia, sei tu che devi attraversarla, per citare un noto calvo..
In ordine d’importanza:

  • Libertà di scelta
…È compito della Repubblica rimuovere gli ostacoli di ordine economico e sociale, che, limitando di fatto la libertà e l’eguaglianza dei cittadini, impediscono il pieno sviluppo della persona umana e l’effettiva partecipazione di tutti i lavoratori all’organizzazione politica, economica e sociale del Paese.

Immaginate di portare vostro figlio a scuola, dopo aver pagato la salata tassa d’iscrizione, vi accorgete che è costretto a scrivere solo con una certa penna di marca, spesso viene da voi lamentandosi che smette di scrivere, si scolorisce, si rompe, ma i maestri continuano a chiedere dei rimborsi ogni volta che riparano o sostituiscono la penna.  Quando poi scoprite che metà del prezzo d’iscrizione è servito proprio per pagare quella penna, senza possibilità di scelta, non ne potete più e cambiate scuola!
In questa nuova scuola ognuno ha scelto la sua penna, a seconda dei propri gusti ed esigenze, ognuno ha la possibilità di riparla da sé, si rompono molto più raramente, sono più leggere e soprattutto sono gratuite!                                                                                                  Spero di aver reso l’idea.
Siamo abituati ad essere trattati dal governo, come dal mercato, al pari di plancton, esseri senza la capacità di intendere, volere e pensare, con la differenza che noi siamo in grado di mettere mano al portafogli su comando.  La cosa triste è che questo è vero per la maggior parte della popolazione (basti vedere lo share di certe trasmissioni.. ), ma questa è un’altra storia.
L’acquisto del computer fisico e del software installato, devono essere due fasi distinte e separate, completamente autonome e soprattutto io acquirente ignorante devo essere messo di fronte ad una scelta al momento dell’acquisto, altrimenti penserò che Windows è l’unico sistema esistente al mondo.. (un mondo molto triste)
Per concludere, in uno stato che si definisce democratico, il software presente in tutti gli istituti pubblici non potrebbe che essere software libero, perché questo è l’unico che permette un pieno, totale e libero controllo, diffusione e modifica a costo zero.
Esempio concreto: 

Nel mese di ottobre del 2007, sono venuto a conoscenza che la nostra scuola era in procinto di ricevere una fornitura di computer per la nuova aula d’informatica. Il nuovo dirigente scolastico, prof. Vito Parisi, venuto a conoscenza delle mie competenze nel settore, mi chiese di dare un’occhiata al contratto di fornitura. Erano previsti un totale di otto computer con relativo software a pagamento. Troppo pochi per avere un’aula in grado di ospitare una classe. Sapete com’è finita? Con gli stessi soldi, grazie anche alla sensibilità del vincitore della gara, sig. Barone di Gela, i computer sono diventati ben 16 (dico sedici), in grado di soddisfare appieno i bisogni di un’intera classe. Vi chiederete come abbiamo fatto. Semplice, abbiamo sostituito tutto il software a pagamento previsto dalla fornitura (che poi non era neppure molto, sempre per questioni economiche) con software libero e gratuito..

Immaginate le centinaia di milioni di euro che lo Stato potrebbe risparmiare ogni anno sostituendo il software proprietario con quello libero, questo sarebbe sicuramente il primo punto di una finanziaria intelligente.. ma non si può certo pensare a queste sciocchezze mentre si  è impegnati in grandi manovre politiche come lo scudo fiscale.. ma questa è un’altra storia..
In conclusione credo che il 99% delle persone che usano Windows, lo usano semplicemente perché sono abituati così, quello è stato il primo sistema che gli hanno dato e non hanno voglia di cambiarlo, anzi nemmeno sanno dell’esistenza di alternative.. (si potrebbe fare lo stesso ragionamento per la religione, ma questa è un’altra storia. 🙂

  • Controllo del calcolatore che ho pagato 

Questo è il contratto che accettiamo installando una qualsiasi distribuzione GNU/linux. ovvero la GPL, con le eventuali modifiche.Qui il testo completo in italiano, non è l’ultima versione ma rende l’idea.  Dato che sicuramente non vi va di leggerlo ne riporto un breve riassunto:

1. È lecito copiare e distribuire copie letterali del codice
sorgente del Programma così come viene ricevuto, con qualsiasi mezzo,
a condizione che venga riprodotta chiaramente su ogni copia una
appropriata nota di copyright e di assenza di garanzia; che si
mantengano intatti tutti i riferimenti a questa Licenza e all’assenza
di ogni garanzia; che si dia a ogni altro destinatario del Programma
una copia di questa Licenza insieme al Programma.


È possibile richiedere un pagamento per il trasferimento fisico di una
copia del Programma, è anche possibile a propria discrezione
richiedere un pagamento in cambio di una copertura assicurativa.


2. È lecito modificare la propria copia o copie del Programma, o
parte di esso, creando perciò un’opera basata sul Programma, e copiare
o distribuire tali modifiche o tale opera secondo i termini del
precedente comma 1, a patto che siano soddisfatte tutte le condizioni
che seguono:


a) Bisogna indicare chiaramente nei file che si tratta di copie
modificate e la data di ogni modifica.


b) Bisogna fare in modo che ogni opera distribuita o pubblicata,
che in parte o nella sua totalità derivi dal Programma o da parti
di esso, sia concessa nella sua interezza in licenza gratuita ad
ogni terza parte, secondo i termini di questa Licenza.


c) Se normalmente il programma modificato legge comandi
interattivamente quando viene eseguito, bisogna fare in modo che
all’inizio dell’esecuzione interattiva usuale, esso stampi un
messaggio contenente una appropriata nota di copyright e di
assenza di garanzia (oppure che specifichi il tipo di garanzia che
si offre). Il messaggio deve inoltre specificare che chiunque può
ridistribuire il programma alle condizioni qui descritte e deve
indicare come reperire questa Licenza. Se però il programma di
partenza è interattivo ma normalmente non stampa tale messaggio,
non occorre che un’opera basata sul Programma lo stampi.


Questi requisiti si applicano all’opera modificata nel suo complesso.
Se sussistono parti identificabili dell’opera modificata che non siano
derivate dal Programma e che possono essere ragionevolmente
considerate lavori indipendenti, allora questa Licenza e i suoi
termini non si applicano a queste parti quando queste vengono
distribuite separatamente. Se però queste parti vengono distribuite
all’interno di un prodotto che è un’opera basata sul Programma, la
distribuzione di quest’opera nella sua interezza deve avvenire nei
termini di questa Licenza, le cui norme nei confronti di altri utenti
si estendono all’opera nella sua interezza, e quindi ad ogni sua
parte, chiunque ne sia l’autore.


Quindi, non è nelle intenzioni di questa sezione accampare diritti, né
contestare diritti su opere scritte interamente da altri; l’intento è
piuttosto quello di esercitare il diritto di controllare la
distribuzione di opere derivati dal Programma o che lo contengano.


Inoltre, la semplice aggregazione di un’opera non derivata dal
Programma col Programma o con un’opera da esso derivata su di un mezzo
di memorizzazione o di distribuzione, non è sufficente a includere
l’opera non derivata nell’ambito di questa Licenza.


3. È lecito copiare e distribuire il Programma (o un’opera basata su
di esso, come espresso al comma 2) sotto forma di codice oggetto o
eseguibile secondo i termini dei precedenti commi 1 e 2, a patto che
si applichi una delle seguenti condizioni…. 

Vi prego di confrontarlo con quello Microsoft..

1. CONCESSIONE DI LICENZA. Microsoft concede all’utente i seguenti diritti, a condizione che l’utente si attenga alle condizioni del presente Contratto:
1.1 Installazione e Utilizzo. L’utente potrà installare,utilizzare, accedere a, visualizzare ed eseguire una copia del Software su di un singolo computer, quale una workstation, un terminale o un altro dispositivo (“Computer Workstation”). Il Software non potrà essere utilizzato da più di due (2) processori in uno specifico momento su un singolo Computer Workstation.
1.2 Attivazione Obbligatoria. I diritti di licenza concessi nel presente Contratto sono limitati a trenta (30)giorni dalla data della prima installazione del Software a menoche l’utente non fornisca le informazioni necessarie per attivare una copia concessa in licenza secondo le modalità descritte durante la sequenza di installazione del Software. L’utente potrà attivare il Software tramite Internet o telefonicamente. In questo caso potrebbero essere addebitati i costi della telefonata. L’utente potrebbe inoltre dover attivare nuovamente il Software nel caso in cui modifichi la configurazione hardware del computer o alteri il Software. Il Software utilizza tecnologie per la protezione contro l’utilizzo di copie non concesse in licenza o illegali. Microsoft utilizzerà tali tecnologie per confermare il possesso di una copia regolarmente concessa in licenza del Software. Se l’utente non utilizza una copia del Software concessa in licenza, non potrà installare il Software o i futuri aggiornamenti del Software. Microsoft non recupererà dal Computer Workstation dell’utente alcuna informazione personale durante questo processo.
1.3 Connessione di dispositivi. L’utente potrà connettere al Computer Workstation un massimo di dieci (10) computer o altri dispositivi elettronici (“Dispositivo”) per utilizzare uno o più dei seguenti servizi del Software: Servizi di File, Servizi di Stampa, Internet Information Services, Condivisione connessione Internet e Servizi Telefonici. Le dieci connessioni consentite includono qualsiasi connessione indiretta realizzata mediante software o hardware”multiplexing” o “pooling”, o qualsivoglia software o hardware di aggregazione delle connessioni. Le dieci connessioni consentite non sono applicabili a qualsiasi altro utilizzo del Software, ad esempio la sincronizzazione dei dati tra un Dispositivo e il Computer Workstation, a condizione che l’utilizzo, la visualizzazione, l’esecuzione o l’accesso al Software venga effettuato da un solo utente alla volta. Il presente Articolo 1.3 non concede all’utente il diritto di accedere a una Sessione del Computer Workstation da qualsiasi Dispositivo. Con “Sessione” si intende qualsiasi utilizzo del Software che attivi una funzionalità simile a quella disponibile a un utente finale che sta interagendo con il Computer Workstation attraverso qualsiasi combinazione di periferiche di input, output e visualizzazione.

Addirittura mi viene negato di installare il software che ho pagato, su più di una macchina, alla quale non potrò collegare più di dieci dispositivi! È uno scherzo? Sembrerebbe di no..
Se poi ci aggiungiamo il fatto che è codice chiuso,per cui una falla di sicurezza viene riparata soltanto dopo mesi che tutti i pirati di mezzo mondo l’hanno già sfruttata… e se ci aggiungessimo anche i crash di sistema.. e la pesantezza.. e .. ok basta non voglio infierire.

Motivi simili non mi permettono di accettare nemmeno un contratto Macintosh.

Al di là della questione legale, e di modifica del sistema stesso, che ai più non interessa, (ma dovrebbe da un punto di vista economico-politico-filosofico) per controllo intendo soprattutto la possibilità di personalizzare il sistema nella sua totalità: dal sistema grafico (quello che in windows si chiama explorer, mentre su GNU/Linux ne possiamo scegliere uno tra una decina), al tipo di avvio di sistema, a dove montare i nostri hard disk, a ..tutto. Possiamo modificare ogni cosa.

  • Stabilità e leggerezza
La stabilità del sistema è da sempre stato un vanto di GNU/linux e Unix, basti pensare al motto di OpenBSD, un sistema Unix orientato alla sicurezza: “Solamente due buchi di sicurezza remoti con l’installazione di default in oltre 10 anni”.

Windows, ad ogni nuova versione (95, 98, 2000, Me, XP, Vista), richiede hardware sempre più potente. Quindi, se vuoi che Windows continui a funzionare, devi acquistare costantemente nuovo hardware, in pratica comprare un nuovo computer. Però non vedo alcuna buona ragione per un’evoluzione così drastica. Di sicuro qualche professionista ha bisogno di computers potenti per il tipo particolare di lavoro che svolge. Ma per tutti gli utenti comuni che navigano in rete, leggono e scrivono e-mail, scrivono file di testo, realizzano presentazioni, ascoltano musica o vedono dei film, che senso ha comprare un nuovo computer ogni 2, 3 o 4 anni? Di sicuro vanno a riempire le tasche dei produttori e rivenditori di computer. Qual’è la ragione per la quale il tuo computer non dovrebbe più fare nulla di quello che faceva, benissimo, 5 anni fa? Forse vi sono accordi segreti tra produttori di software commerciale e produttori di hardware? In fondo da questa corsa alle prestazioni esasperate ci guadagnano bene entrambi. ( Fonte )

  • Gratuità in piena legalità
Perché continuare a crackare windows e i suoi relativi programmi, quando esistono alternative libere, gratuite ed equivalenti? Questo è sempre più vero anche per software professionali.
  • Difficoltà accesso virus e bassa potenzialità di danneggiamento
Ho dato questo titolo intricato per chiarire uno dei tanti luoghi comuni, ovvero che linux è immune ai virus. È una sciocchezza. Qualsiasi sistema programmato è soggetto ai virus, dalla lavatrice, al gps, al cellulare al sistema operativo. Questo perchè il virus non è nient’altro che un programma scritto appositamente per danneggiare quello specifico sistema, quindi nessuno mi vieta di aprire la centralina della lavatrice inserire un chip programmato da me che manda il cestello fuori giri, con il risultato di avere una centrifuga creante un vortice spazio-temporale che risucchia l’intera cucina.
Boiate a parte, a questo punto mi sembra ragionevole considerare il sistema più sicuro quello per cui sia più difficile scrivere un virus, che ne limiti la diffusione e la potenza distruttiva.
A questo proposito mentre chiunque può scrivere poche righe di batch per formattare il disco, inserire lo script in avvio automatico e attendere il riavvio del disgraziato, in linux questo non può accadere perché c’è una netta distinzione tra l’utente e l’amministratore di sistema, quindi per qualsiasi modifica di sistema c’è bisogno della password di amministratore.
  • Frammentazione dei dati
Per farla breve i moderni filesystem Gnu/linux/Unix sono molto più veloci e soprattutto affidabili del vecchio ntfs. (relazione su ext4)
  • Scelta e installazione dei programmi in due click
Su alcune delle distribuzioni GNU/linux è disponibile un comodissimo programma dove potete scegliere l’applicazione che vi serve e installarla con un click! Mentre su win e mac dovete girare su internet per decine di minuti, alla ricerca del programma, senza alcuna garanzia sul suo contenuto (potrebbe benissimo essere un virus), per non parlare di quando non sapete il nome del programma, ma ve ne serve uno che faccia esattamente quella cosa… 
In distribuzioni come Debian,Ubuntu,Mint, Fedora, Mandriva ecc. basta selezionarle o cercarle in una lista ed il gioco è fatto, in questo modo avete anche la garanzia che il programma sia stato scritto da sviluppatori fidati e non un pirla qualunque! 
Alla faccia della difficoltà linux 😉

Riprendiamoci un pò di privacy: gpg, Thunderbird, Enigmail

Non essendo un terrorista internazionale, e non avendo grossi segreti da nascondere, l’utilizzo della crittografia è sempre stato fortemente legato alla sua complessità d’utilizzo, ovvero se ci devo mettere più a crittografare che a scrivere/inviare il messaggio, lascio perdere.
Credendo/sperando che voi vi troviate nella stessa situazione, non posso che consigliarvi l’installazione di Enigmail, un plugin per ThunderBird che non fa altro che aggiungere un comodo menù a quest’ultimo, per gestire facilmente le vostre chiavi pgp.

Basta seguire la guida sul sito e in 5 minuti, avremo aggiunto il plugin a TB e creato il nostro paio di chiavi.
Consiglio sempre di uploadare la nostra chiave pubblica sul server pgp, dato che rende molto semplice l’aggiunta da parte dei nostri destinatari.

Una volta configurato TB per la lettura della nostra posta, e magari abilitato l’apposito plugin in emesene, avremo un sistema veramente troppo comodo da utilizzare! 😉

tips & tricks per Gnu/Linux: Terminale

 


Una raccolta di comandi utili di quelli che “Cavolo fino a ieri ce l’avevo davanti, ora che mi serve non me lo ricordo!”

Formattare e creare FileSystem

sudo fdisk /dev/sdb
sudo mkfs.etx2 /dev/

Dare una bella ripulita ai file di configurazione dei programmi rimossi, nei sistemi Debian based

dpkg –purge `COLUMNS=300 dpkg -l | egrep “^rc” | cut -d’ ‘ -f3`
oppure
dpkg –list |grep “^rc” | cut -d ” ” -f 3 | xargs sudo dpkg –purge

 

Trovare un determinato file

  – per nome

locate -b ‘\nomeesatto’

potrebbe fallire a causa del database non aggiornato, ma allora o aggiorniamo il database con updatedb e ridiamo locate, oppure:

find /percorso/ -name nomefile

più lento (effettua una ricerca vera non in un database) ma a colpo sicuro.

   – per data di creazione 
Trova tutti i file creati nella /home: oggi (0 giorni di vita) o negli ultimi 60 minuti

find /home/ -ctime 0

find . -mmin -60 -ls | less

Cercare un comando dato in passato
Come ho detto all’inizio, mi è  capitato molte volte di dovermi andare a ricercare una guida dove indicava qual’era quel comando esatto che risolveva proprio il mio problema, ma avrei fatto prima così:

cat ~/.bash_history | egrep quelloCheMiRicordo
oppure
history | egrep quellochericordo

 

Aggiunge sudo al comando precedente

sudo !!

[alex@localhost ~]$ pacman -Sy
errore: questa operazione è possibile solo da root.
[alex@localhost ~]$ sudo !!
sudo pacman -Sy..

 

sudo -s

permette di passare a una shell di root, ovvero di poter dare più comandi come amministratore senza dover ogni volta inserire sudo e la password.

Passa come argomento, l’argomento del comando precedente!

comando $_

[alex@localhost ~]$ touch ~/documenti/leggimi
[alex@localhost ~]$ gedit $_ &
[1] 25154

Lanciare processi in background
Quando diamo un comando, è probabile che dopo vogliamo riavere subito il controllo della shell, senza attendere la terminazione di quest’ultimo, allora basterà aggiungere una “e commerciale” & alla fine del comando (vedi sopra).

Salvare e ripristinare tutti i nostri programmi dopo una formattazione
nb: NON ripristinare la lista dei programmi su una versione diversa del sistema!

dpkg --get-selections > /home/$USER/lista_pacchetti

Reinstallare la lista di pacchetti:

sudo dpkg --set-selections < /home/$USER/lista_pacchetti
sudo apt-get dselect-upgrade

Unire più file pdf :

gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile=fileFinale.pdf file1.pdf file2.pdf

Conoscere la versione precisa del proprio sistema 

cat /etc/*release 
cat /etc/issue 

Impostare degli alias utili
aprire il file .bashrc ( gedit ~/.bashrc ) e inserire le seguenti righe

alias up=’sudo apt-get update’
alias upg=’sudo apt-get upgrade’
alias upup=’up && upg’
alias inst=’sudo apt-get install’

.. e aggiornare il sistema sarà molto più comodo 🙂

Sbloccare il gestore degli aggiornamenti :

Lettura elenco dei pacchetti… ErroreE: Encountered a section with no Package: headerE: Problem with MergeList /var/lib/apt/lists/it.archive.ubuntu.com_ubuntu_dists_natty_main_binary-i386_PackagesE: L’elenco dei pacchetti o il file di stato non può essere letto o aperto.

sudo rm /var/lib/apt/lists/* -vf
sudo apt-get update

Ripristinare file cancellati

potete trovare altri comandi qui qua!

rubrica.sh

Gestione di una semplice rubrica, con menù di modifica e salvataggio in un file esterno.

#! /bin/bash
# ES. 6
# gestione rubrica telefonica e output nel file rubrica
clear
empty(){
echo " ERR: Il file rubrica non esiste o è vuoto! "
return
}

checkNum(){
[[ $1 =~ ^([0-9]+)$ ]] && return 0;
echo " ERR: \"$1\" non è un numero intero!" && return 1;
}

thereIs () {
[[ -z `egrep ":($1)" rubrica` ]] && echo " \"$1 \" non presente! " && continue
return
}

# scelta menu
echo
PS3="inserisci la scelta: "
select scelta in visualizza inserimento eliminazione cerca_Cognome cerca_Nome Help fine
do
case $REPLY in
1) # visualizza
echo
if [ -s rubrica ]
then
more rubrica
else empty
fi
echo
;;
2) # inserisci INSERIRE CONTROLLI
echo
echo " Inserimento nuovo campo : "
printf "\n Nome: "
read nome
printf " Cognome: "
read cognome
err=0
while [ $err -eq 0 ]
do
printf " Numero: "
read num
checkNum $num
[[ $? -eq 0 ]] && err=1
done

echo "$cognome:$nome:$num" >> rubrica
sort rubrica > temp | mv temp rubrica
;;
3) # elimina
echo
echo -e " eliminazione di un record \n"
printf " inserisci nome: "
read nome
printf " inserisci cognome: "
read cognome
if [ -s rubrica ]
then
# cotrollo esistenza campo
[[ -z `egrep "^($cognome):($nome)" rubrica` ]] && echo " campo \"$cognome:$nome\" non presente " && break
egrep -v "^($cognome):($nome)" rubrica > temp
mv temp rubrica
echo " eliminazione eseguita."
else empty
fi
echo
;;
4) # ricerca cognome
echo
if [ -s rubrica ]
then
printf " inserisci il cognome: "
read cognome
thereIs $cognome
echo && egrep "^($cognome)" rubrica && echo
else empty
fi
echo
;;
5) # ricerca nome
echo
if [ -s rubrica ]
then
printf " inserisci il nome: "
read nome
thereIs $nome
echo && egrep ":($nome)" rubrica && echo
else empty
fi
echo
;;
6)
echo " HELP "
echo "1. visualizza il contenuto di rubrica "
echo "2. inserisci un nuovo record "
echo "3. eliminazione di un record "
echo "4. ricerca per cognome"
echo "5. ricerca per nome "
echo "6. questo help"
echo "7. esci"
;;
7) exit 0 ;;
*) echo " Inserisci un valore adeguato!" ;;
esac

done
exit 0

# gio 29 ott 2009 12:19:55 CET
# tux_errante

clock.sh

Semplice script bash che implementa funzioni cronologiche.
Sostituire la riga 71 : “echo ripetizione” con l’operazione che si voglia eseguire.


#! /bin/bash
#clock.sh 1) sveglia: esegue un comando ad un ora inserita
# 2) timer : per un intervallo dà un messaggio ongi x secondi
clear

ora=0000 # le funzioni non possono ritornare un valore > 255 !

check(){
while true
do
read ora
[[ $ora =~ ^(([0-1][0-9])|((2)[0-4]))([0-5][0-9])$ ]] && ora=$ora && return
printf " ERR Formato errato: inserisci un numero da [0 a 24][0 a 59] : "

done
exit 0
}

getInt(){ # controlla che i parametri immessi siano numeri
while true
do
read a
if [[ $a =~ ^([0-9]+)$ ]]
then
return $a
else
printf " devi inserire un numero: "
fi
done
exit -1
}

PS3="inserisci la scelta: "
echo
select scelta in sveglia timer help esci
do
case $REPLY in
1) echo -e "\n Modalità sveglia : ora attuale `date +%H%M` "
printf "\n inserisci ora nel fomato hhmm : "
check

while true
do
[[ $ora -eq `date +%H%M` ]] && echo -e " SVEGLIA !! \n" && exit 0
sleep 1
done
;;
2)
echo -e "\n Impostazione timer \n"
printf " inserisci valore intervallo massimo in secondi "
getInt
i=$?

printf " inserisci valore periodo "
getInt
p=$?

start=`date +%s`
let max="$start + $i" # tempo massimo
k=1
now=`date +%s`
# ho dovuto introdurre la variabile now perchè inserendo il comando date nell'until
# e nell'if dava risultati differenti a seconda dell'istantein cui venivano processati
# così invece ho fregato lo scheduler ;)
until [ $now -gt $max ] # finchè non raggiungo il tempo massimo
do
if [ $now -eq $(($start + $p)) ] # finchè non raggiungo il tempo+periodo
then
start=`date +%s`
echo "ripetizione $k"
let k+=1
fi
now=`date +%s`
done
printf " Intervallo scaduto \n\n"
exit 0
;;
3)
echo -e " \t Help "
echo " 1) SVEGLIA: esegue una determinata azione solo allo scadere dell'ora scelta."
echo " 2) TIMER: esegue una determinata azione allo scadere di ogni intervallo, all'interno di un certo periodo."
echo " 3) Help: spero ti sia d'aiuto."
echo " 4) Esci."
;;
4) break;;
*) echo " Non hai fatto una scelta valida ";;
esac
done
exit 0

#gio 22 ott 2009 19:14:38 CEST
# Alessandro Affinito

Powered by WordPress & Theme by Anders Norén