Hej,
Jag har skapat ett litet skript som läser in användare ifrån en text fil, dessa skapas sedan med userAdd i Debian 3.1 och i MySQL samt sätts Quota på dem.
Problemet uppstår när jag skapar lösenordet, då userAdd kräver Crypt(); så genererar jag lösenorden med denna funktion och får ut en lång sträng, denna sträng använder jag sedan i userAdd -p kollar jag sedan med tex webmin så är det krypterade lösenordet endast mellan 8 - 15 tecken långt medans strängen beståt utav 20 tecken.
Troligen är det något i Debian som jag har glömt att aktivera, men jag får det itne att fungera riktigt.
bifogar koden:
#!/usr/local/bin/php -q
<?php
$ReadFile = "data.txt"; // Filen du hämtar data ifrån
$WriteFile = "akronymer.txt"; // Filen du sparar data till
$AliasFile = "alias.txt"; // Filen du sparar data till
$PasswordLenght = "7"; // Antal tecken i lösenordet
$mysql_server = "localhost"; // Vilken server MySQL ligger på
$mysql_user = "xxx"; // Användarnamn (root)
$mysql_password = "xxx"; // Lösenord (root)
$mysql_database = ""; // Vilken databas
$path = "/home3"; // Sökväg till var användarens www katalog ligger
// Funktion för att skapa alumpade lösenord.
function generatePassword($plength) {
if(!is_numeric($plength) || $plength <= 0) {
$plength = 7; // Sätter minsta storlek
}
if($plength > 32){
$plength = 32; // Sätter max storlek
}
// Skapar en variabel, som innehåller de bokstäver som skall användas.
$chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
// Random number generator
mt_srand(microtime() * 1000000);
// Skapar lösenordet
for($i = 0; $i < $plength; $i++) {
$key = mt_rand(0,strlen($chars)-1);
$pwd = $pwd . $chars{$key};
}
// Byter plats på bokstäverna, för att skapa ännu svårare lösenord
for($i = 0; $i < $plength; $i++) {
$key1 = mt_rand(0,strlen($pwd)-1);
$key2 = mt_rand(0,strlen($pwd)-1);
$tmp = $pwd{$key1};
$pwd{$key1} = $pwd{$key2};
$pwd{$key2} = $tmp;
}
return $pwd; // Retunerar resultatet
}
//Ansluter till MySQL
$conn = mysql_connect($mysql_server, $mysql_user, $mysql_password);
mysql_select_db($mysql_database, $conn);
print ("Text filen innehåller följande information:\n");
print ("===========================================\n");
$ReadFile = $ReadFile; //filnamnet
$search = ("/[a-z]{4}[0-9]{2}/"); // skapar sök kriterierna
$ReadFile = file($ReadFile) Or Die("kunde inte öppna filen"); // laddar filen
$ReadFile = implode($ReadFile, ""); // tar bort alla mellanslag
echo "$ReadFile\n";
echo "\n";
if ( preg_match_all( $search, $ReadFile, $matches ) ) { // om den hittar något som passar sök kriterierna. Gå vidare
for ($i=0; $i< count($matches[0]); $i++) { // listar alla träffar
$password = generatePassword($PasswordLenght); // Anropar funktionen för att skapa lösenord, skickar med storlek.
$crypt = crypt($password);
$akronym = htmlentities($matches[0][$i]); // gör om arrayen till en sträng
echo "Akronym: $akronym | E-post: $akronym@student.bth.se | Lösenord: $password\nCrypt: $crypt\n\n";
$WriteFile = $WriteFile; //filnamnet - Akronym + lösenord
$Open = fopen ($WriteFile, "a"); // öppnar filen
fwrite ($Open, "$akronym\t$password\t$crypt\n"); // sparar filen, med akronym + lösenord
fclose ($Open); // stänger filen
$AliasFile = $AliasFile; //filnamnet - Apache alias
$Open = fopen ($AliasFile, "a"); // öppnar filen
fwrite ($Open, "Alias /$akronym \"$path/$akronym/www\"\n"); // sparar filen, med alias
fclose ($Open); // stänger filen
//skapar användaren och hans hemkatalog
system("useradd -g student -d \"$path\"/\"$akronym\" -m -p \"$crypt\" \"$akronym\"");
//skapar databasen
mysql_query("CREATE DATABASE $akronym");
echo "Databasen $akronym skapades\n";
//rättigheterna för databasen
mysql_query("GRANT CREATE TEMPORARY TABLES ON *.* TO $akronym@'%' IDENTIFIED BY '$password' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0");
echo "Rättigheterna för databasen $akronym skapades\n";
//rättigheterna för tabellen
mysql_query("GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES ON $akronym.* TO $akronym@'%' WITH GRANT OPTION");
echo "Rättigheterna för tabellen $akronym skapades\n";
//lägger till 30mb/konto
system("edquota -u -p test01 \"$akronym\"");
}
}
?>