[BASH] Script pour générer des mots de passe

Voici un petit script fait pour ceux qui doivent maintenir des serveurs et créer des mots de passe rapidement :

#!/bin/bash
# random password generator

# Sets the maximum size of the password the script will generate
MAXSIZE=40  # <<——- You can change value

array1=(‘a’ ‘b’ ‘c’ ‘d’ ‘e’ ‘f’ ‘g’ ‘h’ ‘i’ ‘j’ ‘k’ ‘l’ ‘m’ ‘n’ ‘o’ ‘p’ ‘q’ ‘r’ ‘s’ ‘t’ ‘u’ ‘v’ ‘w’ ‘x’ ‘y’ ‘z’ ‘0’ ‘1’ ‘2’ ‘3’ ‘4’ ‘5’ ‘6’ ‘7’ ‘8’ ‘9’ ‘0’ ‘A’ ‘B’ ‘C’ ‘D’ ‘E’ ‘F’ ‘G’ ‘H’ ‘I’ ‘J’ ‘K’ ‘L’ ‘M’ ‘N’ ‘O’ ‘P’ ‘Q’ ‘R’ ‘S’ ‘T’ ‘U’ ‘V’ ‘W’ ‘X’ ‘Y’ ‘Z’ ‘!’ ‘£’ ‘$’ ‘%’ ‘&’ ‘=’ ‘.’ ‘,’ ‘;’ ‘:’ ‘-‘ ‘_’)

# Used in conjunction with modulus to keep random numbers in range of the array size
MODNUM=${#array1[*]}

# Keeps track of the number characters in the password we have generated
pwd_len=0

# Bash’s command substitution syntax to store the results of the tput command
term_clear=$(tput clear)

# Stores the number of lines or rows on the terminal display
max_lines=$(tput lines)

# Stores the number of columns on the terminal display
max_cols=$(tput cols)

# Finds the appropriate spot to indent for horizontally centered output
indent=$(( ((max_cols / 2)) – ((MAXSIZE / 2)) ))

# Finds the vertical center of the terminal.
line_num=$(( max_lines / 2 ))

# Clear the screen
echo $term_clear

# The outer while loop starts at 0 and loops till MAXSIZE, creating a passwd char each iteration.
# The shells $RANDOM variable creates a semi-random unsigned number. This is our entropy. =x
# x simply holds some random unsigned int that will be used to make the character scramble.
# 500 was choosen for speed and nothing else. Leave out the mod 500 if you want or change it.
# The inner loop displays the password characters. Tput keeps the cursor in the proper position.
# Mod MODNUM keeps the random number inside the size of the array so it doesnt over index.
while [ $pwd_len -lt $MAXSIZE ]
do
x=$(($RANDOM%500))
y=0
while [ $y -lt $x ]
do
((y++))
index=$(($RANDOM%$MODNUM))
tput cup $line_num $(( indent + pwd_len ))
echo -n « ${array1[$index]} »
done
((pwd_len++))
done

# Place the cursor at the bottom of the screen –where is usually at.
tput cup $max_lines 0

exit 0

En espérant qu’il serve 🙂

L’évolution d’un programmeur

High School/Junior High

10 PRINT « HELLO WORLD »
20 END

First year in College

program Hello(input, output)
begin
writeln(‘Hello World’)
end.

Senior year in College

(defun hello
(print
(cons ‘Hello (list ‘World))))

New professional

#include
void main(void)
{
char *message[] = {« Hello « , « World »};
int i;

for(i = 0; i < 2; ++i)
printf(« %s », message[i]);
printf(« \n »);
}

Seasoned professional

#include
#include

class string
{
private:
int size;
char *ptr;

public:
string() : size(0), ptr(new char(‘\0’)) {}

string(const string &s) : size(s.size)
{
ptr = new char[size + 1];
strcpy(ptr, s.ptr);
}

~string()
{
delete [] ptr;
}

friend ostream &operator <<(ostream &, const string &);
string &operator=(const char *);
};

ostream &operator<<(ostream &stream, const string &s)
{
return(stream << s.ptr);
}

string &string::operator=(const char *chrs)
{
if (this != &chrs)
{
delete [] ptr;
size = strlen(chrs);
ptr = new char[size + 1];
strcpy(ptr, chrs);
}
return(*this);
}

int main()
{
string str;

str = « Hello World »;
cout << str << endl;

return(0);
}

Master Programmer

[
uuid(2573F8F4-CFEE-101A-9A9F-00AA00342820)
]
library LHello
{
// bring in the master library
importlib(« actimp.tlb »);
importlib(« actexp.tlb »);

// bring in my interfaces
#include « pshlo.idl »

[
uuid(2573F8F5-CFEE-101A-9A9F-00AA00342820)
]
cotype THello
{
interface IHello;
interface IPersistFile;
};
};

[
exe,
uuid(2573F890-CFEE-101A-9A9F-00AA00342820)
]
module CHelloLib
{

// some code related header files
importheader();
importheader();
importheader();
importheader(« pshlo.h »);
importheader(« shlo.hxx »);
importheader(« mycls.hxx »);

// needed typelibs
importlib(« actimp.tlb »);
importlib(« actexp.tlb »);
importlib(« thlo.tlb »);

[
uuid(2573F891-CFEE-101A-9A9F-00AA00342820),
aggregatable
]
coclass CHello
{
cotype THello;
};
};

#include « ipfix.hxx »

extern HANDLE hEvent;

class CHello : public CHelloBase
{
public:
IPFIX(CLSID_CHello);

CHello(IUnknown *pUnk);
~CHello();

HRESULT  __stdcall PrintSz(LPWSTR pwszString);

private:
static int cObjRef;
};

#include
#include
#include
#include
#include « thlo.h »
#include « pshlo.h »
#include « shlo.hxx »
#include « mycls.hxx »

int CHello::cObjRef = 0;

CHello::CHello(IUnknown *pUnk) : CHelloBase(pUnk)
{
cObjRef++;
return;
}

HRESULT  __stdcall  CHello::PrintSz(LPWSTR pwszString)
{
printf(« %ws\n », pwszString);
return(ResultFromScode(S_OK));
}

CHello::~CHello(void)
{

// when the object count goes to zero, stop the server
cObjRef–;
if( cObjRef == 0 )
PulseEvent(hEvent);

return;
}

#include
#include
#include « pshlo.h »
#include « shlo.hxx »
#include « mycls.hxx »

HANDLE hEvent;

int _cdecl main(
int argc,
char * argv[]
) {
ULONG ulRef;
DWORD dwRegistration;
CHelloCF *pCF = new CHelloCF();

hEvent = CreateEvent(NULL, FALSE, FALSE, NULL);

// Initialize the OLE libraries
CoInitializeEx(NULL, COINIT_MULTITHREADED);

CoRegisterClassObject(CLSID_CHello, pCF, CLSCTX_LOCAL_SERVER,
REGCLS_MULTIPLEUSE, &dwRegistration);

// wait on an event to stop
WaitForSingleObject(hEvent, INFINITE);

// revoke and release the class object
CoRevokeClassObject(dwRegistration);
ulRef = pCF->Release();

// Tell OLE we are going away.
CoUninitialize();

return(0); }

extern CLSID CLSID_CHello;
extern UUID LIBID_CHelloLib;

CLSID CLSID_CHello = { /* 2573F891-CFEE-101A-9A9F-00AA00342820 */
0x2573F891,
0xCFEE,
0x101A,
{ 0x9A, 0x9F, 0x00, 0xAA, 0x00, 0x34, 0x28, 0x20 }
};

UUID LIBID_CHelloLib = { /* 2573F890-CFEE-101A-9A9F-00AA00342820 */
0x2573F890,
0xCFEE,
0x101A,
{ 0x9A, 0x9F, 0x00, 0xAA, 0x00, 0x34, 0x28, 0x20 }
};

#include
#include
#include
#include
#include
#include « pshlo.h »
#include « shlo.hxx »
#include « clsid.h »

int _cdecl main(
int argc,
char * argv[]
) {
HRESULT  hRslt;
IHello        *pHello;
ULONG  ulCnt;
IMoniker * pmk;
WCHAR  wcsT[_MAX_PATH];
WCHAR  wcsPath[2 * _MAX_PATH];

// get object path
wcsPath[0] = ‘\0’;
wcsT[0] = ‘\0’;
if( argc > 1) {
mbstowcs(wcsPath, argv[1], strlen(argv[1]) + 1);
wcsupr(wcsPath);
}
else {
fprintf(stderr, « Object path must be specified\n »);
return(1);
}

// get print string
if(argc > 2)
mbstowcs(wcsT, argv[2], strlen(argv[2]) + 1);
else
wcscpy(wcsT, L »Hello World »);

printf(« Linking to object %ws\n », wcsPath);
printf(« Text String %ws\n », wcsT);

// Initialize the OLE libraries
hRslt = CoInitializeEx(NULL, COINIT_MULTITHREADED);

if(SUCCEEDED(hRslt)) {

hRslt = CreateFileMoniker(wcsPath, &pmk);
if(SUCCEEDED(hRslt))
hRslt = BindMoniker(pmk, 0, IID_IHello, (void **)&pHello);

if(SUCCEEDED(hRslt)) {

// print a string out
pHello->PrintSz(wcsT);

Sleep(2000);
ulCnt = pHello->Release();
}
else
printf(« Failure to connect, status: %lx », hRslt);

// Tell OLE we are going away.
CoUninitialize();
}

return(0);
}

Apprentice Hacker

#!/usr/local/bin/perl
$msg= »Hello, world.\n »;
if ($#ARGV >= 0) {
while(defined($arg=shift(@ARGV))) {
$outfilename = $arg;
open(FILE, « > » . $outfilename) || die « Can’t write $arg: $!\n »;
print (FILE $msg);
close(FILE) || die « Can’t close $arg: $!\n »;
}
} else {
print ($msg);
}
1;

Experienced Hacker

#include
#define S « Hello, World\n »
main(){exit(printf(S) == strlen(S) ? 0 : 1);}

Seasoned Hacker

% cc -o a.out ~/src/misc/hw/hw.c
% a.out

Guru Hacker

% cat
Hello, world.
^D

New Manager

10 PRINT « HELLO WORLD »
20 END

Middle Manager

mail -s « Hello, world. » bob@b12
Bob, could you please write me a program that prints « Hello,
world. »?
I need it by tomorrow.
^D

Senior Manager

% zmail jim
I need a « Hello, world. » program by this afternoon.

Chief Executive

% letter
letter: Command not found.
% mail
To: ^X ^F ^C
% help mail
help: Command not found.
% damn!
!: Event unrecognized
% logout

Sortie de BilboPlanet 0.3.2 : faites votre Planet en quelques clics

C’est grâce à votre feedback et vos commentaires sur le forum que nous avons décidé de nous lancer dans une 3ième mouture de la branche 0.3. Cette nouvelle version numérotée 0.3.2 regroupe un ensemble de corrections de bugs que vous nous avez fait remarquer, ainsi que quelques nouveautés.
Suivant la roadmap mise en place, c’est donc sans jour de retard que nous vous livrons le package 🙂
Concrètement, nous pouvons affirmer que maintenant, le BilboPlanet commence à concurrencer sérieusement les autres Planets existant comme planet-planet, un Planet écrit en Python. L’avantage du bilboPlanet est qu’il nécessite uniquement un serveur avec Apache (ou tout autres serveurs Web), MySQL et PHP.
Notons de plus l’utilisation du BilboPlanet par les communautés Jquery-Fr et prochainement Frugalware-Fr.

Je profite aussi de cette actualité pour vous faire pars de la venu d’un nouveau dans le groupe des développeurs du BilboPlanet : Guillaume Oña. Merci à lui et bienvenue 🙂

C’est donc grâce à toutes vos remarques et vos retours que cette nouvelle version fait son apparition. Nous espérons sincèrement qu’elle vous plaira. Néanmoins, même si on a surtout mis le paquet sur la correction de bugs et la stabilité du programme, je vous invite quand même à lire la liste suivante des fonctionnalités sur lesquelles nous avons travaillés :

  • Ne plus demander de mettre ou non le « / » à la fin d’une url, c’est maintenant automatique,
  • Mise en place d’un nouveau thème lors de l’installation du bilboplanet,
  • Explications plus précises de la signification des champs lors de l’installation,
  • Mise à jour du Tableau de Bord : ajout d’information à propos du serveur sur le dashboard, ajout de news sur le dashboard
  • Mise à jour de la librairie simplepie vers la 1.2,
  • Mise en place d’un bouton « A propos » ou qui vous permettra de vous rendre sur le site, d’avoir un accès rapide à la documentation, etc,
  • Nouveau système d’import/export optimisé pour les migrations,
  • Ajout de clarté dans l’interface d’admin au niveau des choix de certain textes
  • Ainsi que divers bugs

Dans un soucis de compatibilité future, j’invite toutes les personnes ayant installés la version 0.3.1 ou des version antérieures dans un environnement de production de faire une mise à jour vers cette version ci. La raison est que la prochaine version 0.4 comportera beaucoup de changements et ne permettra pas de migrer facilement vers cette version (nouvelle structure de base de donnée). C’est pour ça que la version 0.3.2 inclus une interface d’export des données qui sera supportée dans la version 0.4 pour vous permettre de facilement migrer votre planet !

Mise à jour du bilboPlanet

Pour la mise à jour à partir d’une ancienne version.

Gardez une copie des fichiers :

	.protected
	.htaccess
	admin/.htaccess
	inc/config.php

Pour les versions 0.1 et 0.2 vers 0.3, mettez à jour la base de données :

	ALTER TABLE `flux` ADD `last_updated` INT NOT NULL DEFAULT '0';
	ALTER TABLE `flux` ADD `status_flux` INT(1) NOT NULL DEFAULT '1'
	CREATE FULLTEXT INDEX fulltext_index_article_titre ON article (article_titre,article_content);

Quelques Screenshots:



Liens utiles :
Le bilboPlanet sur le Launchpad : https://launchpad.net/bilboplanet (permet de nous envoyer des patchs et de nous envoyer des bugs)
Le forum du BilboPlanet : http://www.bilboplanet.com/forum (faites nous vos retour sur le programme et les bugs rencontrés)
Lire la documentation d’installation et de migration : http://www.bilboplanet.com/documentation.php
Se rendre sur la page Téléchargement : http://www.bilboplanet.com/download.php

Téléchargement :

Télécharger la dernière version du BilboPlanet
Téléchargez BilboPlanet 0.3.2

L’évolution d’un Programmeur

High School/Junior High

10 PRINT « HELLO WORLD »
20 END

First year in College

program Hello(input, output)
begin
writeln(‘Hello World’)
end.

Senior year in College

(defun hello
(print
(cons ‘Hello (list ‘World))))

New professional

#include
void main(void)
{
char *message[] = {« Hello « , « World »};
int i;

for(i = 0; i < 2; ++i)
printf(« %s », message[i]);
printf(« \n »);
}

Seasoned professional

#include
#include

class string
{
private:
int size;
char *ptr;

public:
string() : size(0), ptr(new char(‘\0’)) {}

string(const string &s) : size(s.size)
{
ptr = new char[size + 1];
strcpy(ptr, s.ptr);
}

~string()
{
delete [] ptr;
}

friend ostream &operator <<(ostream &, const string &);
string &operator=(const char *);
};

ostream &operator<<(ostream &stream, const string &s)
{
return(stream << s.ptr);
}

string &string::operator=(const char *chrs)
{
if (this != &chrs)
{
delete [] ptr;
size = strlen(chrs);
ptr = new char[size + 1];
strcpy(ptr, chrs);
}
return(*this);
}

int main()
{
string str;

str = « Hello World »;
cout << str << endl;

return(0);
}

Master Programmer

[
uuid(2573F8F4-CFEE-101A-9A9F-00AA00342820)
]
library LHello
{
// bring in the master library
importlib(« actimp.tlb »);
importlib(« actexp.tlb »);

// bring in my interfaces
#include « pshlo.idl »

[
uuid(2573F8F5-CFEE-101A-9A9F-00AA00342820)
]
cotype THello
{
interface IHello;
interface IPersistFile;
};
};

[
exe,
uuid(2573F890-CFEE-101A-9A9F-00AA00342820)
]
module CHelloLib
{

// some code related header files
importheader();
importheader();
importheader();
importheader(« pshlo.h »);
importheader(« shlo.hxx »);
importheader(« mycls.hxx »);

// needed typelibs
importlib(« actimp.tlb »);
importlib(« actexp.tlb »);
importlib(« thlo.tlb »);

[
uuid(2573F891-CFEE-101A-9A9F-00AA00342820),
aggregatable
]
coclass CHello
{
cotype THello;
};
};

#include « ipfix.hxx »

extern HANDLE hEvent;

class CHello : public CHelloBase
{
public:
IPFIX(CLSID_CHello);

CHello(IUnknown *pUnk);
~CHello();

HRESULT  __stdcall PrintSz(LPWSTR pwszString);

private:
static int cObjRef;
};

#include
#include
#include
#include
#include « thlo.h »
#include « pshlo.h »
#include « shlo.hxx »
#include « mycls.hxx »

int CHello::cObjRef = 0;

CHello::CHello(IUnknown *pUnk) : CHelloBase(pUnk)
{
cObjRef++;
return;
}

HRESULT  __stdcall  CHello::PrintSz(LPWSTR pwszString)
{
printf(« %ws\n », pwszString);
return(ResultFromScode(S_OK));
}

CHello::~CHello(void)
{

// when the object count goes to zero, stop the server
cObjRef–;
if( cObjRef == 0 )
PulseEvent(hEvent);

return;
}

#include
#include
#include « pshlo.h »
#include « shlo.hxx »
#include « mycls.hxx »

HANDLE hEvent;

int _cdecl main(
int argc,
char * argv[]
) {
ULONG ulRef;
DWORD dwRegistration;
CHelloCF *pCF = new CHelloCF();

hEvent = CreateEvent(NULL, FALSE, FALSE, NULL);

// Initialize the OLE libraries
CoInitializeEx(NULL, COINIT_MULTITHREADED);

CoRegisterClassObject(CLSID_CHello, pCF, CLSCTX_LOCAL_SERVER,
REGCLS_MULTIPLEUSE, &dwRegistration);

// wait on an event to stop
WaitForSingleObject(hEvent, INFINITE);

// revoke and release the class object
CoRevokeClassObject(dwRegistration);
ulRef = pCF->Release();

// Tell OLE we are going away.
CoUninitialize();

return(0); }

extern CLSID CLSID_CHello;
extern UUID LIBID_CHelloLib;

CLSID CLSID_CHello = { /* 2573F891-CFEE-101A-9A9F-00AA00342820 */
0x2573F891,
0xCFEE,
0x101A,
{ 0x9A, 0x9F, 0x00, 0xAA, 0x00, 0x34, 0x28, 0x20 }
};

UUID LIBID_CHelloLib = { /* 2573F890-CFEE-101A-9A9F-00AA00342820 */
0x2573F890,
0xCFEE,
0x101A,
{ 0x9A, 0x9F, 0x00, 0xAA, 0x00, 0x34, 0x28, 0x20 }
};

#include
#include
#include
#include
#include
#include « pshlo.h »
#include « shlo.hxx »
#include « clsid.h »

int _cdecl main(
int argc,
char * argv[]
) {
HRESULT  hRslt;
IHello        *pHello;
ULONG  ulCnt;
IMoniker * pmk;
WCHAR  wcsT[_MAX_PATH];
WCHAR  wcsPath[2 * _MAX_PATH];

// get object path
wcsPath[0] = ‘\0’;
wcsT[0] = ‘\0’;
if( argc > 1) {
mbstowcs(wcsPath, argv[1], strlen(argv[1]) + 1);
wcsupr(wcsPath);
}
else {
fprintf(stderr, « Object path must be specified\n »);
return(1);
}

// get print string
if(argc > 2)
mbstowcs(wcsT, argv[2], strlen(argv[2]) + 1);
else
wcscpy(wcsT, L »Hello World »);

printf(« Linking to object %ws\n », wcsPath);
printf(« Text String %ws\n », wcsT);

// Initialize the OLE libraries
hRslt = CoInitializeEx(NULL, COINIT_MULTITHREADED);

if(SUCCEEDED(hRslt)) {

hRslt = CreateFileMoniker(wcsPath, &pmk);
if(SUCCEEDED(hRslt))
hRslt = BindMoniker(pmk, 0, IID_IHello, (void **)&pHello);

if(SUCCEEDED(hRslt)) {

// print a string out
pHello->PrintSz(wcsT);

Sleep(2000);
ulCnt = pHello->Release();
}
else
printf(« Failure to connect, status: %lx », hRslt);

// Tell OLE we are going away.
CoUninitialize();
}

return(0);
}

Apprentice Hacker

#!/usr/local/bin/perl
$msg= »Hello, world.\n »;
if ($#ARGV >= 0) {
while(defined($arg=shift(@ARGV))) {
$outfilename = $arg;
open(FILE, « > » . $outfilename) || die « Can’t write $arg: $!\n »;
print (FILE $msg);
close(FILE) || die « Can’t close $arg: $!\n »;
}
} else {
print ($msg);
}
1;

Experienced Hacker

#include
#define S « Hello, World\n »
main(){exit(printf(S) == strlen(S) ? 0 : 1);}

Seasoned Hacker

% cc -o a.out ~/src/misc/hw/hw.c
% a.out

Guru Hacker

% cat
Hello, world.
^D

New Manager

10 PRINT « HELLO WORLD »
20 END

Middle Manager

mail -s « Hello, world. » bob@b12
Bob, could you please write me a program that prints « Hello,
world. »?
I need it by tomorrow.
^D

Senior Manager

% zmail jim
I need a « Hello, world. » program by this afternoon.

Chief Executive

% letter
letter: Command not found.
% mail
To: ^X ^F ^C
% help mail
help: Command not found.
% damn!
!: Event unrecognized
% logout