w1z4rd
Karmic Sangoma
- Joined
- Jan 17, 2005
- Messages
- 49,747
So I need to extract all the emails from one of the domains I have. There are roughly 2000 email accounts on this one domain. The server is a CentOS server with Cpanel loaded on it. I have two scripts to work with:
One using awk:
and one using PHP
Now these scripts work great on all domains, except my largest one. Where I get the following error:
Anyone know how to break any of the above scripts up so I can safely extract the emails from the domain?
One using awk:
Code:
#!/bin/awk -f
#
# File: getAllEmail.awk
#
# This awk script takes the input of ls -d /home/*/mail/*/*
# checks to see if the directory exists, then outputs the email address. My example
# outputs them to a text file called emailaddress.txt
#
# I wrote it to get all the email addresses out of my cpanel box.
# You are free to use this program for your own purposes. If you
# improve it, please let me know. If it is horribly flawed, please let me know.
#
# Author: Hans C. Kaspersetz
# Date: 10/27/2007
# Email: hans [at] cyberxdesigns [dot] com
#
# Usage on cpaneli cli> ls -d /home/*/mail/*/*/ | getAllEmail.awk > emailaddress.txt
BEGIN {
}
{
tcmd = "test -d " $1
if(!system(tcmd)){
split($1,MyArray,"/")
print MyArray[6] "@" MyArray[5]
}
}
and one using PHP
Code:
#!/usr/local/bin/php
<?php
$folderlist = `ls -d /home/*/mail/*/*`;
$list_array = explode("\n",$folderlist);
foreach($list_array as $folder){
if(is_dir($folder)){
$folder_array = explode("/",$folder);
print $folder_array[5] . "@" . $folder_array[4] ."\n";
}
}
?>
Now these scripts work great on all domains, except my largest one. Where I get the following error:
-bash: /bin/ls: Argument list too long
Anyone know how to break any of the above scripts up so I can safely extract the emails from the domain?