C# Windows IO错误 使用系统; 使用System.Collections.Generic; 使用System.Linq; 使用系统文本; 使用系统数据; 使用System.Data.SqlClient; 使用System.IO; Net系统; 使用系

C# Windows IO错误 使用系统; 使用System.Collections.Generic; 使用System.Linq; 使用系统文本; 使用系统数据; 使用System.Data.SqlClient; 使用System.IO; Net系统; 使用系,c#,C#,Windows IO错误 使用系统; 使用System.Collections.Generic; 使用System.Linq; 使用系统文本; 使用系统数据; 使用System.Data.SqlClient; 使用System.IO; Net系统; 使用系统诊断; 使用系统配置; 使用系统集合; 使用系统计时器; 使用System.Text.RegularExpressions; 利用制度全球化; 使用System.Net.Mail; 命名空间VSATStatusReader { 班级计划 {

Windows IO错误
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
使用系统数据;
使用System.Data.SqlClient;
使用System.IO;
Net系统;
使用系统诊断;
使用系统配置;
使用系统集合;
使用系统计时器;
使用System.Text.RegularExpressions;
利用制度全球化;
使用System.Net.Mail;
命名空间VSATStatusReader
{
班级计划
{
静态void Main(字符串[]参数)
{
//由Reema修改,用于在2011年2月16日该实用程序成功或失败时生成登录表和触发邮件。
尝试
{
InsertIntoJobLogTable(“实用程序已启动”,“S”);
UtilityMainFunction();
}
捕获(例外情况除外)
{
InsertIntoJobLogTable(“从UtilityMainFunction返回时出错:”“+ex.Message+”,“E”);
UtilityUnMiltopromonsys(“0”,“例如消息+”,“,”);
}
}
公共静态无效实用程序mainfunction()
{
数据集ds;
字符串IP=“”;
ds=新数据集();
尝试
{
ds=getDataSet(“选择网关_ip作为shannonnew..gateway_info的ip”).Copy();
foreach(ds.Tables[0].行中的DataRow dRow)
{
IP=dRow[“IP”].ToString();
CreateRunBatchFile(IP);
string[]DNCCfileEntries=Directory.GetFiles(“c:/VSATStatus/VSATStatusFiles”);
string connString=getConnString();
SqlConnection myDbConnection=新的SqlConnection(connString);
myDbConnection.Open();
foreach(DNCCfileEntries中的字符串文件名)
{
FileStream file=newfilestream(文件名,FileMode.OpenOrCreate,FileAccess.Read);
StreamReader sr=新的StreamReader(文件);
ArrayList finalWordList;
字符串s=sr.ReadToEnd();
字符串[]行=Regex.Split,“\r\n”);
foreach(行中的字符串行)
{
字符串格式line=line.Replace(“iso.3.6.1.4.1.303.3.3.19.6.3.25.1.3.”,“”);
string[]words=formattedline.Split(“”);
finalWordList=新的ArrayList();
如果(单词[0].ToString()!=“”)
{
添加(单词[0]);
添加(文字[1]);
//在此处插入数据库代码
如果(line.Trim()!=“”)
{
string strCmd=“插入ipgw_evp(序列号、VSAT_状态、网关IP)值(“+finalWordList[0]+”、“+finalWordList[1]+”、“+IP+”)”;
SqlCommand=newsqlcommand(strCmd,myDbConnection);
command.ExecuteNonQuery();
}
}
}
高级关闭();
file.Close();
}
myDbConnection.Close();
}
插入作业日志表(“实用程序结束”,“C”);
//实用性取消过滤操作系统(“1”、“成功”、“成功”);
}
捕获(例外情况除外)
{
InsertIntoJobLogTable(“UtilityMainFunction中的错误:'”+ex.Message+“'”,“F”);
UtilityrUnMiltopromonsys(“0”,““””+ex.StackTrace.ToString()+“”,“““+IP+”,““+ex.Message+””);
WriteLine(“发生异常:{0},{1}”,例如Message,例如StackTrace.ToString());
}
}
私有静态字符串getConnString()
{
string connectionProperties=ConfigurationSettings.AppSettings[“ProMonSysConsoleString”];
返回connectionProperties;
}
公共静态void CreateRunBatchFile(字符串IP)
{
//根据需要更改路径
string filepath=“c:/VSATStatus\\VSATStatus.bat”;
尝试
{
StreamWriter sw=File.CreateText(文件路径);
sw.WriteLine(“delc:\\VSATStatus\\VSATStatusFiles\\VSATStatus.txt”);
sw.WriteLine(“@echo off”);
sw.WriteLine(“Snmpwalk-v1-oq-cpublic”+IP+“1.3.6.1.4.1.303.3.3.19.6.3.25.1.3>>c:\\VSATStatus\\VSATStatusFiles\\VSATStatus.txt”);
sw.Close();
进程p=null;
字符串targetDir;
targetDir=string.Format(@“C:\VSATStatus”);
p=新工艺();
p、 StartInfo.WorkingDirectory=targetDir;
p、 StartInfo.FileName=“VSATStatus.bat”;
p、 StartInfo.Arguments=string.Format(“C-Sharp控制台应用程序”);
p、 StartInfo.CreateNoWindow=true;
p、 Start();
p、 WaitForExit();
}
捕获(例外情况除外)
{
WriteLine(“发生异常:{0},{1}”,例如Message,例如StackTrace.ToString());
}
}
公共静态数据集getDataSet(字符串strCmd)
{
SqlCommand命令;
sqldatada;
数据集ds;
string connString=getConnString();
SqlConnection myDbConnection=新的SqlConnection(connString);
myDbConnection.Open();
command=newsqlcommand(strCmd,myDbConnection);
command.CommandType=CommandType.Text;
da=新的SqlDataAdapter(命令);
ds=新数据集();
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.IO;
using System.Net;
using System.Diagnostics;
using System.Configuration;
using System.Collections;
using System.Timers;
using System.Text.RegularExpressions;
using System.Globalization;
using System.Net.Mail;


namespace VSATStatusReader
{
    class Program
    {
        static void Main(string[] args)
        {
            //Modified by Reema for generating log in table and trigger mail on success or failure of this utility on 16-feb-2011.
                try
                {
                    InsertIntoJobLogTable("Utility Started", "S");
                    UtilityMainFunction();
                }
                catch (Exception ex)
                {
                    InsertIntoJobLogTable("Error on returning from UtilityMainFunction function: '" + ex.Message + "' ", "E");
                    UtilityRunMailToProMonSys("0", "'" + ex.Message + "'", "", "");
                }
        }

        public static void UtilityMainFunction()
        {
            DataSet ds;
            string IP = "";

            ds = new DataSet();

            try
            {
                ds = getDataSet("select gateway_ip as IP from shannonnew..gateway_info").Copy();

                foreach (DataRow dRow in ds.Tables[0].Rows)
                {
                    IP = dRow["IP"].ToString();

                    CreateRunBatchFile(IP);

                    string[] DNCCfileEntries = Directory.GetFiles("c:/VSATStatus/VSATStatusFiles");
                    string connString = getConnString();
                    SqlConnection myDbConnection = new SqlConnection(connString);
                    myDbConnection.Open();

                    foreach (string fileName in DNCCfileEntries)
                    {
                        FileStream file = new FileStream(fileName, FileMode.OpenOrCreate, FileAccess.Read);

                        StreamReader sr = new StreamReader(file);

                        ArrayList finalWordList;

                        string s = sr.ReadToEnd();
                        string[] lines = Regex.Split(s, "\r\n");

                        foreach (string line in lines)
                        {
                            string formatedLine = line.Replace("iso.3.6.1.4.1.303.3.3.19.6.3.25.1.3.", "");
                            string[] words = formatedLine.Split(' ');
                            finalWordList = new ArrayList();
                            if (words[0].ToString() != "")
                            {
                                finalWordList.Add(words[0]);
                                finalWordList.Add(words[1]);

                                //Database Insert Code here
                                if (line.Trim() != "")
                                {
                                    string strCmd = "Insert into ipgw_evp (Serial_No, VSAT_Status, Gateway_IP) values ('" + finalWordList[0] + "', '" + finalWordList[1] + "', '" + IP + "')";
                                    SqlCommand command = new SqlCommand(strCmd, myDbConnection);
                                    command.ExecuteNonQuery();
                                }
                            }
                        }
                        sr.Close();
                        file.Close();
                    }
                    myDbConnection.Close();
                }
                InsertIntoJobLogTable("Utility Ended", "C");
                //UtilityRunMailToProMonSys("1", "success", "");
            }
            catch (Exception ex)
            {
                InsertIntoJobLogTable("Error in UtilityMainFunction:'" + ex.Message + "' ", "F");
                UtilityRunMailToProMonSys("0", "'" + ex.StackTrace.ToString() + "'", "'" + IP + "'", "'" + ex.Message + "'");
                Console.WriteLine("Exception Occurred :{0},{1}", ex.Message, ex.StackTrace.ToString());
            }
        }

        private static string getConnString()
        {
            string connectionProperties = ConfigurationSettings.AppSettings["ProMonSysConsoleString"];
            return connectionProperties;
        }

        public static void CreateRunBatchFile(string IP)
        {
            //change the path as required
            string filepath = "c:/VSATStatus\\VSATStatus.bat";

            try
            {
                StreamWriter sw = File.CreateText(filepath);

                sw.WriteLine("del C:\\VSATStatus\\VSATStatusFiles\\VSATStatus.txt");
                sw.WriteLine("@echo off");
                sw.WriteLine("Snmpwalk -v 1 -O q -c public " + IP + " 1.3.6.1.4.1.303.3.3.19.6.3.25.1.3 >>C:\\VSATStatus\\VSATStatusFiles\\VSATStatus.txt");
                sw.Close();

                Process p = null;

                string targetDir;
                targetDir = string.Format(@"C:\VSATStatus");
                p = new Process();
                p.StartInfo.WorkingDirectory = targetDir;
                p.StartInfo.FileName = "VSATStatus.bat";
                p.StartInfo.Arguments = string.Format("C-Sharp Console application");
                p.StartInfo.CreateNoWindow = true;
                p.Start();
                p.WaitForExit();
            }
            catch (Exception ex)
            {
                Console.WriteLine("Exception Occurred :{0},{1}", ex.Message, ex.StackTrace.ToString());
            }
        }

        public static DataSet getDataSet(string strCmd)
        {
            SqlCommand command;
            SqlDataAdapter da;
            DataSet ds;

            string connString = getConnString();
            SqlConnection myDbConnection = new SqlConnection(connString);
            myDbConnection.Open();

            command = new SqlCommand(strCmd, myDbConnection);
            command.CommandType = CommandType.Text;
            da = new SqlDataAdapter(command);
            ds = new DataSet();
            da.Fill(ds);

            myDbConnection.Close();

            return ds;
        }

        //changed by Reema for sending massage and stacktrace in mails.
        public static void UtilityRunMailToProMonSys(string str, string stacktr, string IP, string error)
        {
            try
            {
                string msg = "";
                msg += "<BR>";
                if (str == "0")
                {
                    msg += "VSATStatusReader Utillity fails.";
                    msg += "<BR>";
                    msg += "<BR>Failed IP Gateway is : '" + IP + "' ";
                    msg += "<BR>";
                    msg += "<BR>";
                    msg += "Exception is : '" + error + "' ";
                    msg += "<BR>";
                    msg += "<BR>";
                    msg += "'" + stacktr + "'"; 
                    msg += "<BR>";
                }
                //else
                //{
                //    msg += "VSATStatusReader Utility run successfully. ";
                //}
                msg += "<BR>";
                msg += "<BR>Regards,";
                msg += "<BR>ProMonSys Admin";
                msg += "<BR>";
                var message = new MailMessage(ConfigurationSettings.AppSettings["DefaultEmail"], ConfigurationSettings.AppSettings["ToMail"])
                {
                    Subject = " ProMonSys VSATStatusReader Utility Status",
                    Body = msg,
                    IsBodyHtml = true
                };

                var client = new SmtpClient(ConfigurationSettings.AppSettings["MailServer"]);
                client.Send(message);
            }
            catch (Exception ex)
            {

            }
        }


        public static void InsertIntoJobLogTable(string Msg, string MsgType)
        {
            SqlCommand Cmd = new SqlCommand();
            SqlConnection Conn = new SqlConnection(ConfigurationSettings.AppSettings["ProMonSysConsoleString"]);
            try
            {

                if (Msg.Length > 8000)
                {
                    Msg = Msg.Substring(0, 7999);
                }
                else if (Msg.IndexOf("'") >= 0)
                {
                    Msg = Msg.Replace("'", "");
                }

                Cmd.Connection = Conn;
                Cmd.CommandType = CommandType.StoredProcedure;
                Cmd.CommandText = "Create_Job_Utility_Log_SP";
                Cmd.Parameters.Clear();
                Cmd.Parameters.Add("@vcJobName", "VSATStatusReader_Utility");
                Cmd.Parameters.Add("@vcModule", "ProMonSys");
                Cmd.Parameters.Add("@dtType", MsgType);
                Cmd.Parameters.Add("@vcJobType", "U");
                Cmd.Parameters.Add("@vcDBUsed", "VSATStatusProgram, ProMonSys");
                Cmd.Parameters.Add("@vcJobStatus", Msg);
                Conn.Open();
                Cmd.ExecuteNonQuery();
                Conn.Close();
            }
            catch (Exception ex)
            {
                Console.WriteLine("Exception Occurred :{0},{1}", ex.Message, ex.StackTrace.ToString());
            }
            finally
            {
                Conn.Dispose();
                Cmd.Dispose();
            }

        }
    }

    //public class MailHelper
    //{
    //    public static void SendMailMessage(string from, string to, string bcc, string cc, string subject, string body)
    //    {
    //        MailMessage mMailMessage = new MailMessage();
    //        mMailMessage.From = new MailAddress(from);
    //        mMailMessage.To.Add(new MailAddress(to));

    //        if ((bcc != null) && (bcc != string.Empty))
    //        {
    //            mMailMessage.Bcc.Add(new MailAddress(bcc));
    //        }
    //        if ((cc != null) && (cc != string.Empty))
    //        {
    //            mMailMessage.CC.Add(new MailAddress(cc));
    //        }
    //        mMailMessage.Subject = subject;            
    //        mMailMessage.Body = body;

    //        mMailMessage.IsBodyHtml = true;
    //        mMailMessage.Priority = MailPriority.Normal;

    //        SmtpClient mSmtpClient = new SmtpClient();
    //        mSmtpClient.Send(mMailMessage);
    //    }
    //}


}