Auto submit Daily Report

public class ADR {
   
    private static int YEAR=0;
    private static int MONTH=1;
    private static int DAY=2;
   
    /**
     *
     * @param user
     * @param pass
     * @return
     * @throws Exception
     */
    private static String loginJh(String user , String pass) throws Exception{
        URL url =  new URL("http://jh.livedoor.cn/cgi-bin/cookie/login.pl");
        HttpURLConnection hconn=(HttpURLConnection)url.openConnection();
        hconn.setDoOutput(true);
        hconn.setDoInput(true);
        hconn.setRequestMethod("POST");
       
        /**
         * fill login name and pass
         */
        hconn.getOutputStream().write(("name="+user+"&password="+pass).getBytes());
       
        hconn.getOutputStream().flush();
        hconn.getOutputStream().close();
       
        /**
         * check response code.
         */
        if(hconn.getResponseCode()!=HttpURLConnection.HTTP_OK){
            throw new Exception("Login jh err! description:"+hconn.getResponseMessage());
        }
       
        /**
         * Get cookie
         */
        StringBuffer cookie =new StringBuffer();
        Map
 
 
  
  
   
   > header=hconn.getHeaderFields();
        List
   
   
    
     c=header.get("Set-Cookie");
        for(int i=0;c!=null && i
    
    
     
     ');";
        BufferedReader bis =new BufferedReader(new InputStreamReader(hconn.getInputStream() , "GBK"));
        StringBuffer sb=new StringBuffer();
        while(bis.ready()){
            sb.append((char)bis.read());
        }
        if(!sb.toString().equals(target_html)){
            throw new Exception("Login target web page is err!");
        }
        hconn.disconnect();
       
        return cookie.toString();
    }
   
   
    /**
     *
     * @param cookie
     * @throws Exception
     */
    private static void writeDailyReport(String cookie , String pj_id , String mem_id , String rumor) throws Exception{
       
        /**
         * project id 
         * Security = 80
         */
        String p1="pj_id="+pj_id+"&";
       
        /**
         * mem_id
         * huangcm mem_id=430
         */
        String p1_5="mem_id="+mem_id+"&";
       
        /**
         * submit date&time
         */
        String sdate[]=getStrDate(new Date());
        String p2="c_year="+sdate[YEAR]+"&c_month="+sdate[MONTH]+"&c_day="+sdate[DAY]+"&";
        String p3="start_hour=8&start_min=0&end_hour=19&end_min=30&";
       
        /**
         * work time 8
         */
        String p4="job_time"+pj_id+"=8&";
        String p5="job_content"+pj_id+"="+rumor+"&";
        String p6="sum="+rumor+"&";
        String p7="question=&";
        String p8="experience=&";
       
        /**
         * next day
         */
        String ndate[]=getStrDate(ADR.getNextDay());
        String p9="n_year="+ndate[YEAR]+"&n_month="+ndate[MONTH]+"&n_day="+ndate[DAY]+"&";
       
        /**
         * next plan
         */
        String p10="plan="+rumor;
       
       
        /**
         * submit daily report
         */ 
        URL url2 =  new URL("http://jh.livedoor.cn//cgi-bin/project/pm_rp_add_done.pl");
        HttpURLConnection hconn=(HttpURLConnection)url2.openConnection();
        hconn.setDoOutput(true);
        hconn.setDoInput(true);
        hconn.setRequestMethod("POST");
        hconn.setRequestProperty("Cookie", cookie);
        hconn.getOutputStream().write((p1+p1_5+p2+p3+p4+p5+p6+p7+p8+p9+p10).getBytes());
        hconn.getOutputStream().flush();
        hconn.getOutputStream().close();
       
        if(hconn.getResponseCode()!=HttpURLConnection.HTTP_OK){
            throw new Exception("Write daily report err! description:["+hconn.getResponseCode()+"]"+hconn.getResponseMessage());
        }
       
//        BufferedReader bis =new BufferedReader(new InputStreamReader(hconn.getInputStream() , "GBK"));
//        StringBuffer sb=new StringBuffer();
//        while(bis.ready()){
//            sb.append(bis.readLine()+"/n");
//        }
//        System.out.println(sb.toString());
       
        hconn.disconnect();
    }
   
   
    /**
     *
     * @param format
     * @return
     */
    private static String[] getStrDate(Date date){
        String r[]=new String[3];
        r[YEAR]=new SimpleDateFormat("yyyy").format(date);
        r[MONTH]=String.valueOf(Integer.parseInt(new SimpleDateFormat("MM").format(date)));
        r[DAY]=String.valueOf(Integer.parseInt(new SimpleDateFormat("dd").format(date)));
        return r;
    }
    private static Date getNextDay(){
        Calendar c=Calendar.getInstance();
        c.add(Calendar.DAY_OF_MONTH,1);
        return c.getTime();
    }
   
   
    /**
     * Send mail to mail.livedoor.cn
     * @param user
     * @param pass
     * @param subject
     * @param content
     */
    private static void sendMail(String user,String pass,String subject,String content){
       
         Socket socketSmtpServer = null;
         
         BufferedWriter dos = null;
         BufferedReader dis = null;
         try {
             socketSmtpServer = new Socket("mail.livedoor.cn", 25);
             socketSmtpServer.setSoTimeout(500);
             dos = new BufferedWriter(new OutputStreamWriter(socketSmtpServer.getOutputStream()));
             dis = new BufferedReader(new InputStreamReader (socketSmtpServer.getInputStream()));
             
             try{
                 dis.readLine();
                 dis.readLine();
             }catch(Exception dx){}
             
             dos.write("HELO "+user+"/r/n");dos.flush();
             System.out.println("R_HELO:"+dis.readLine());

             
             // auth login
             dos.write("AUTH LOGIN/r/n");dos.flush();
             System.out.println( new String(new BASE64Decoder().decodeBuffer(dis.readLine())));
             
             String e_user=new BASE64Encoder().encode(user.getBytes());
             dos.write(new String(e_user)+"/r/n");dos.flush();
             System.out.println("R_USER:"+ new String(new BASE64Decoder().decodeBuffer(dis.readLine())));
             
             String e_password=new BASE64Encoder().encode(pass.getBytes());
             dos.write(new String(e_password)+"/r/n");dos.flush();
             System.out.println("R_PASS:"+ dis.readLine());


             dos.write("MAIL FROM:"+user+"@livedoor.cn/r/n");dos.flush();
             System.out.println("R_MAIL FROM:"+dis.readLine());
             
             dos.write("RCPT TO:huangcm@livedoor.cn/r/n");dos.flush();
             System.out.println("RCPT TO:"+dis.readLine());
             
             
             dos.write("DATA/r/n");dos.flush();
             System.out.println("R_DATA:"+dis.readLine());
             
             dos.write("To: myself/r/n");
             dos.write("From: AutoDailyReport/r/n");
             dos.write("Subject: "+subject+"/r/n");
             dos.write("/r/n"+content+"/r/n");
             dos.write("./r/n");
             dos.flush();
             
             System.out.println("R.:"+dis.readLine());
             
             dos.write("QUIT/r/n");dos.flush();
             System.out.println("R_QUIT:"+dis.readLine());
             
         }catch(Exception dx){
             dx.printStackTrace();
         }
          
    }
   
   
    public static void main(String args[]) throws Exception{
       
        if(args.length!=7){
            System.out.println("java ADR jh_name jh_pass project_id mem_id rumor mail_name mail_pass
     
     
      
      ");
            return;
        }
       
        String name=args[0];
        String pass=args[1];
        String pid =args[2];
        String mid =args[3];
        String rumor=args[4];
        String m_user=args[5];
        String m_pass=args[6];
       
        try{
            String cookie=ADR.loginJh(name,pass);
            ADR.writeDailyReport(cookie,pid,mid,rumor);
            sendMail(m_user,m_pass,"AutoDailyReport OK","Submit Daily Report OK.");
        }catch(Exception dx){
            dx.printStackTrace();
            sendMail(m_user,m_pass,"AutoDailyReport Error",dx.getMessage());
        }
       
    }
   
}




//---------------------------------------------------//
Add in Linux crontab (shell script)


#/bin/bsh


LOG_FILE=/opt/AutoDailyReport/haha.log
COMMAND='/usr/java/jdk1.5.0_04/bin/java -cp /opt/AutoDailyReport com.livedoor.xxx.ADR jh_name jh_pass nn nnn coding mail_name mail_pass'

echo `date`>>$LOG_FILE
echo `${COMMAND}`>>$LOG_FILE
echo '-------------------------------------------'>>$LOG_FILE


//------------------------------------------------------//
Windows .bat 批处理
@echo off
rem ***windows bat***
set cp="D:/AutoDailyReport"
set log="%cp%/haha.log"
set jp="d:/java/jdk1.5.0_04/bin/java"
set rcmd="com.livedoor.xxx.ADR"
set parm1="huangchengming"
set parm2="skywest"
set parm3="80"
set parm4="430"
set parm5="coding"
set parm6="huangcm"
set parm7="skywest"

date /t >> %log%
%jp% -cp %cp% %rcmd% %parm1% %parm2% %parm3% %parm4% %parm5% %parm6% %parm7% >> %log%
echo "====================================================================" >> %log%

     
     
    
    
   
   
  
  
 
 
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值