Вот вариант на срр. Компилил для себя под gcc.
Если конечно кому нибуть интересно.. Я кинул прогу в сбин и юзаю. довольно таки удобно.
В параметр передается файл... pw катит на фри.. а вот под линуксами надо еще помучится.
#include <unistd.h>
#include <stdio.h>
#include <string.h>
int main(int argc, char* argv[])
{
char stroka[100], tmp[100];
char* pch;
char* paruserpass[100];
char* cryptpass;
FILE* fp;
stroka[0]=0;
if (argc != 2) {
printf("Использовать как: %s <Имя файла> \n", argv[0]);
exit(0);
}
//открытие файла
fp = fopen(argv[1],"rw");
if (fp==NULL) {perror ("Ошибка открытия файла"); return -1;}
while (!feof(fp)) {
fgets (stroka , 100 , fp);
//сдесь в ковычках перечисляется через какие знаки препинания расположены пользователь и пароль.
//У меня настроено как через пробел или таб или запятую.
pch = strtok (stroka," ,\t");
int n = 0;
while (pch != NULL)
{//printf ("%s\n",pch);
paruserpass[n]= pch;
n++;
//сдесь в ковычках перечисляется через какие знаки препинания расположены пользователь и пароль.
//У меня настроено как через пробел или таб или запятую.
pch = strtok (NULL, " .\t");
}
printf("\n ------------------------------------------------- \n\n");
tmp[0] = 0;
cryptpass = crypt(paruserpass[1], strcat(strcat(tmp, "$1$"),paruserpass[0]));
printf("Пользователь:%s\n Пароль:%s\n Криптованный пароль:%s\n",paruserpass[0],paruserpass[1],cryptpass);
tmp[0] = 0;
// Ну сдесь тупо собираем строку команды useradd по своему вкусу.
system(strcat(strcat(strcat(strcat(strcat(tmp,"useradd "),paruserpass[0])," -p '"),cryptpass),"' -g users"));
printf("\n ------------------------------------------------- \n");
stroka[0]=0;
}
fclose(fp);
return 0;
}
Ну и компилим
cc <имя исходника> -o <Имя получившийся программы> -lcrypt
кому понадобилось -> рад был помоч, за код сильно не придираемся, работает на 100%.