salve,
nu e mai simplu un
mail [EMAIL PROTECTED] -s "new user: `tail -1 /etc/passwd | cut -f1 -d
':'`"</dev/null

jk



Bogdan Marinca wrote:

> On Sun, 11 Mar 2001, Cosmin Chiru wrote:
>
> >
> > Salut!
> >
> > Am si eu o problema. Vreau sa fac un program (c, bash) care in momentul
> > in care este creeat un nou cont pe server, sa fie trimis un mail la un
> > user (nu neaparat root) in care sa fie specificat numele contului si
> > numele celui care l-a facut. Se poa` asa ceva?
> > T.I.A
> >
> > ------
> > Chiru Cosmin
> > http://ovid.rdsct.ro/~cosminc
> >
>
> Salve.
>
> Eu am facut un mic program C care citeste periodic ultima linie adaugata
> la /etc/passwd si o trimite printr`un mail la o anumita adresa
> specificata.
>
> Vezi daca te potzi folosi cumva cu el ...
>
> include <sys/types.h>
> #include <unistd.h>
> #include <fcntl.h>
> #include <stdlib.h>
> #include <errno.h>
> extern int errno; /** dummy **/
>
> #define LINE_L        512
> #define SYSTEM_CMD_L  248
> #define SEC_TO_SLEEP  2                  /* potzi alege mai mult: 10, 180
> ... */
> #define PASSWD_FILE   "/etc/passwd"
> #define MAIL_ADDR     "[EMAIL PROTECTED]" /* adresa de mail folosita */
>
>     int main () {
>       int err, fd, file_length_old = 0, file_length, index;
>       char c;
>       char line_buff [LINE_L + 0x10];
>       char system_cmd_buff [SYSTEM_CMD_L];
>       do {
>         fd = open (PASSWD_FILE, O_RDONLY, 0644);
>         if (fd < 0) {
>           perror (PASSWD_FILE);
>           return 1;
>         }
>         file_length = lseek (fd, 0, SEEK_END);
>         if (file_length_old == 0) /* first time */
>           { file_length_old = file_length; close (fd); continue; }
>         if (file_length < 0) goto FILE_ERR;
>         if (file_length > file_length_old) {
>           err = lseek (fd, file_length_old, SEEK_SET);
>           if (err < 0) goto FILE_ERR;
>           index = 0;
>           do {
>             do {
>               err = read (fd, &c, 1);
>               if (err < 0) {
>                 if (errno != EINTR) goto FILE_ERR;
>                 usleep (10);  /** EINTR **/
>               }
>              else break;
>             } while (1);
>             if (err == 0 || c == '\n') break;
>             line_buff [index++] = c;
>           } while(index < LINE_L);
>           line_buff [index] = 0x00;
>           strcpy (system_cmd_buff, "echo '");
>           strcat (system_cmd_buff, line_buff);
>           strcat (system_cmd_buff, "' | mail -s 'New user was created!'
> ");
>           strcat (system_cmd_buff, MAIL_ADDR);
>           system (system_cmd_buff);
>           /*DEBUG printf ("%s\n", system_cmd_buff); */
>         }
>         file_length_old = file_length;
>         close (fd);
>         sleep (SEC_TO_SLEEP);
>       } while (1);
>       /* return 0; */
> FILE_ERR:
>       perror (PASSWD_FILE);
>       close (fd);
>       return 2;
>     }
> /* vim ts=2 */
>
> Bogdan M.
>
> ---
> Send e-mail to '[EMAIL PROTECTED]' with 'unsubscribe rlug' to
> unsubscribe from this list.


---
Send e-mail to '[EMAIL PROTECTED]' with 'unsubscribe rlug' to 
unsubscribe from this list.

Raspunde prin e-mail lui