### run backup command ### my @system_params = ( "-o", "log/nix_backup_wrap", "$var{username}", "./backup_run.plX" ); my $pid = open my $cmd, "-|", './nix_backup_wrap', @system_params or warn "$!\n"; my $backup_process_status = $? >> 8; my @backup_status_message; print "BACKUP PROCESS STATUS: $backup_process_status\n"; if ( $backup_process_status == 0 ) { $msglog->write( "Success starting backup process!" ); push @backup_status_message, "Success starting backup process!"; open 'PID', '>', $PID_FILE or die "Status $var{status}: Tried to open $PID_FILE $!\n"; print PID "$pid\n"; close PID; } else { $err_msglog->write( "Error starting backup process!" ); push @backup_status_message, "Error starting backup process!"; } $jsonObject = { msgdata => "BACKUP STATUS MESSAGE: @backup_status_message with PID: $pid", pid => $pid, lposition => $var{lposition}, count => $var{count}, segment => $var{segment}, status => $var{status}, backup_process_status => $backup_process_status }; my $jsonEncoded = encode_json $jsonObject; print WB_OUT $cgi->header(-type => "application/json", -charset => "utf-8"); print WB_OUT $jsonEncoded; #### eval { alarm 5; $msglog->write( "/usr/bin/rsync -avz $var{username}\@$IP:/tmp/$var{username}/test /tmp/ | tee -a $TMPLOG" ); exec( "/usr/bin/rsync -avz $var{username}\@$IP:/tmp/$var{username}/test /tmp/ | tee -a $TMPLOG") or $err_msglog->write( "STATUS: $var{status}: Couldn't initiate backup $!\n" ); alarm 0; }; #### /* Set UID to user */ setuid( new_uid ); _user = custom_command( command_whoami ); printf("User after setuid(%d): %s\n", new_uid,_user); /* Now run the actual ".cgi" file */ strcpy( _HOME, "HOME=/home/e-smith/files/users/" ); strcat( _HOME, username ); strcpy( _LOGNAME, "LOGNAME=" ); strcat( _LOGNAME, username ); int ret; char *cmd[] = { script_name, username, (char *)0 }; char *env[] = { _HOME, _LOGNAME, "SHELL=/bin/bash", "SSH_TTY=/dev/pts/1", (char *)0 }; ret = execve (script_name, cmd, env); return(0); }