zoukankan      html  css  js  c++  java
  • 网页上显示windows系统任务计划

    服务器多,系统多,功能模块多。有不少程序需要做交叉部署,重叠部署。出了问题找起来费劲得很。。

    需求:不用db,要用json格式的文本来配置需要的信息,方便修改。然后在网页上按要求显示相关信息。

    设计的json格式:

     1 {
     2   "cfg": [
     3     {
     4       "func": "PhoneRecord",
     5       "server": [
     6         {
     7           "name": "某本地服务器",
     8           "ip": "1.1.1.1",
     9           "domain": "aaa",
    10           "user": "aaa",
    11           "password": "aaa",
    12           "program": [
    13             {
    14               "name": "PhoneRecord_Upload",
    15               "note": "<a target='_blank' href='http://code.shnyu.edu.cn/sq6/publicsafety.bms_alarm/-/wikis/4.2-PhoneRecord_Upload'>帮助文档<a>"
    16             }
    17           ]
    18         },
    19         {
    20           "name": "某内网服务器",
    21           "ip": "2.2.2.2",
    22           "domain": "bbb",
    23           "user": "bbb",
    24           "password": "bbb",
    25           "program": [
    26             {
    27               "name": "PhoneRecord_Upload",
    28               "note": "<a target='_blank' href='http://code.shnyu.edu.cn/sq6/publicsafety.bms_alarm/-/wikis/4.2-PhoneRecord_Upload'>帮助文档<a>"
    29             },
    30             {
    31               "name": "PhoneRecord_TEXT",
    32               "note": "<a target='_blank' href='http://code.shnyu.edu.cn/sq6/publicsafety.bms_alarm/-/wikis/4.4-PhoneRecord_TEXT'>帮助文档<a>"
    33             }
    34           ]
    35         }
    36       ]
    37     },
    38     {
    39       "func": "NYUCard",
    40       "server": [
    41         {
    42           "name": "某内网服务器",
    43           "ip": "2.2.2.2",
    44           "domain": "bbb",
    45           "user": "bbb",
    46           "password": "bbb",
    47           "program": [
    48             {
    49               "name": "NYUCard",
    50               "note": "<a target='_blank' href='http://code.shnyu.edu.cn/sq6/publicsafety.bms_alarm/-/wikis/3-NYUCard'>帮助文档<a>"
    51             }
    52           ]
    53         }
    54       ]
    55     }
    56   ]
    57 }
    View Code

    网页:

    主要是这个合并单元格的较为烦人,

    参考了篇博客的思路 https://www.cnblogs.com/wangzhenyu666/p/8302881.html 

    但是这里会涉及到多层嵌套故不能照搬,

    实现和优化过程:

      1 using System.Text;
      2 using System.IO;
      3 using Newtonsoft.Json.Linq;
      4 using System.Web;
      5 using TaskScheduler;
      6 
      7 namespace OAConsole_IIS
      8 {
      9     public class cfg
     10     {
     11 
     12         public static string HtmlTable()
     13         {
     14             var cfgPath = $"{HttpContext.Current.Server.MapPath("~/cfg.json")}";
     15             var str = File.ReadAllText(cfgPath);
     16             var obj = JObject.Parse(str);
     17 
     18             StringBuilder sb = new StringBuilder();
     19             sb.Append("<table>");
     20             //sb.Append("<thead><tr><th>功能</th><th>服务器IP</th><th>程序名称</th><th>运行状态</th><th>最近运行时间</th><th>下次运行时间</th></tr></thead>");
     21 
     22             foreach (var func in obj["cfg"])
     23             {
     24                 sb.Append("<tr>");
     25                 sb.Append($"<td>{func["func"]}</td>");
     26                 //
     27                 sb.Append($"<td>");
     28                 sb.Append("<table>");
     29                 foreach (var server in func["server"])
     30                 {
     31                     var tasks = SchTaskExt.GetAllTasks();
     32                     sb.Append("<tr>");
     33                     sb.Append($"<td>{server["name"]}-{server["ip"]}</td>");
     34                     //
     35                     sb.Append($"<td>");
     36                     sb.Append("<table>");
     37                     foreach (var program in server["program"])
     38                     {
     39                         var State = "";
     40                         var LastRunTime = "";
     41                         var NextRunTime = "";
     42 
     43                         IRegisteredTask task = null;
     44                         try
     45                         {
     46                             task = tasks[program["name"]];
     47                             State = task.State.ToString();
     48                             LastRunTime = task.LastRunTime.ToString();
     49                             NextRunTime = task.NextRunTime.ToString();
     50                         }
     51                         catch (System.Exception)
     52                         {
     53                         }
     54 
     55                         sb.Append("<tr>");
     56                         sb.Append($"<td>{program["name"]}</td>");
     57                         sb.Append($"<td>{State}</td>");
     58                         sb.Append($"<td>{LastRunTime}</td>");
     59                         sb.Append($"<td>{NextRunTime}</td>");
     60                         sb.Append($"<td>{program["note"]}</td>");
     61                         sb.Append("</tr>");
     62                     }
     63                     sb.Append("</table>");
     64                     sb.Append($"</td>");
     65                     //
     66                     sb.Append("</tr>");
     67                 }
     68                 sb.Append("</table>");
     69                 sb.Append($"</td>");
     70                 //
     71                 sb.Append("</tr>");
     72             }
     73 
     74             sb.Append("</table>");
     75             return sb.ToString();
     76 
     77         }
     78 
     79         public static string HtmlTable2()
     80         {
     81             var cfgPath = $"{HttpContext.Current.Server.MapPath("~/cfg.json")}";
     82             var str = File.ReadAllText(cfgPath);
     83             var obj = JObject.Parse(str);
     84 
     85             StringBuilder sb = new StringBuilder();
     86             sb.Append("<table>");
     87             sb.Append("<thead><tr><th>功能</th><th>服务器IP</th><th>程序名称</th><th>运行状态</th><th>最近运行时间</th><th>下次运行时间</th><th>note</th></tr></thead>");
     88 
     89             for (int i = 0; i < ((JContainer)obj["cfg"]).Count; i++)
     90             {
     91                 for (int j = 0; j < ((JContainer)obj["cfg"][i]["server"]).Count; j++)
     92                 {
     93                     for (int k = 0; k < ((JContainer)obj["cfg"][i]["server"][j]["program"]).Count; k++)
     94                     {
     95                         var func = obj["cfg"][i]["func"].ToString();
     96                         var server_name = obj["cfg"][i]["server"][j]["name"].ToString();
     97                         var server_ip = obj["cfg"][i]["server"][j]["ip"].ToString();
     98                         var program_name = obj["cfg"][i]["server"][j]["program"][k]["name"].ToString();
     99                         var program_note = obj["cfg"][i]["server"][j]["program"][k]["note"].ToString();
    100                         sb.Append($"<tr><td>{func}</td><td>{server_name}-{server_ip}</td><td>{program_name}</td><td>running</td><td>12:00</td><td>15:00</td><td>{program_note}</td></tr>");
    101                     }
    102                 }
    103             }
    104 
    105             sb.Append("</table>");
    106             return sb.ToString();
    107 
    108         }
    109 
    110         public static string HtmlTable3()
    111         {
    112             var cfgPath = $"{HttpContext.Current.Server.MapPath("~/cfg.json")}";
    113             var str = File.ReadAllText(cfgPath);
    114             var obj = JObject.Parse(str);
    115 
    116             StringBuilder sb = new StringBuilder();
    117             sb.Append("<table>");
    118             sb.Append("<thead><tr><th>功能</th><th>服务器IP</th><th>程序名称</th><th>运行状态</th><th>最近运行时间</th><th>下次运行时间</th><th>note</th></tr></thead>");
    119 
    120             for (int i = 0; i < ((JContainer)obj["cfg"]).Count; i++)
    121             {
    122                 for (int j = 0; j < ((JContainer)obj["cfg"][i]["server"]).Count; j++)
    123                 {
    124                     for (int k = 0; k < ((JContainer)obj["cfg"][i]["server"][j]["program"]).Count; k++)
    125                     {
    126                         var func = obj["cfg"][i]["func"].ToString();
    127                         var server_name = obj["cfg"][i]["server"][j]["name"].ToString();
    128                         var server_ip = obj["cfg"][i]["server"][j]["ip"].ToString();
    129                         var program_name = obj["cfg"][i]["server"][j]["program"][k]["name"].ToString();
    130                         var program_note = obj["cfg"][i]["server"][j]["program"][k]["note"].ToString();
    131                         //sb.Append($"<tr><td>{func}</td><td>{server_name}-{server_ip}</td><td>{program_name}</td><td>running</td><td>12:00</td><td>15:00</td><td>{program_note}</td></tr>");
    132 
    133                         if (k == 0)
    134                         {
    135                             sb.Append($"<tr><td>{func}</td><td rowspan='{((JContainer)obj["cfg"][i]["server"][j]["program"]).Count}'>{server_name}-{server_ip}</td><td>{program_name}</td><td>running</td><td>12:00</td><td>15:00</td><td>{program_note}</td></tr>");
    136                         }
    137                         else
    138                         {
    139                             sb.Append($"<tr><td>{func}</td><td>{program_name}</td><td>running</td><td>12:00</td><td>15:00</td><td>{program_note}</td></tr>");
    140                         }
    141 
    142                     }
    143                 }
    144             }
    145 
    146             sb.Append("</table>");
    147             return sb.ToString();
    148 
    149         }
    150 
    151         public static string HtmlTable4()
    152         {
    153             var cfgPath = $"{HttpContext.Current.Server.MapPath("~/cfg.json")}";
    154             var str = File.ReadAllText(cfgPath);
    155             var obj = JObject.Parse(str);
    156 
    157             StringBuilder sb = new StringBuilder();
    158             sb.Append("<table>");
    159             sb.Append("<thead><tr><th>功能</th><th>服务器IP</th><th>程序名称</th><th>运行状态</th><th>最近运行时间</th><th>下次运行时间</th><th>note</th></tr></thead>");
    160 
    161             for (int i = 0; i < ((JContainer)obj["cfg"]).Count; i++)
    162             {
    163                 for (int j = 0; j < ((JContainer)obj["cfg"][i]["server"]).Count; j++)
    164                 {
    165                     for (int k = 0; k < ((JContainer)obj["cfg"][i]["server"][j]["program"]).Count; k++)
    166                     {
    167                         var func = obj["cfg"][i]["func"].ToString();
    168                         var server_name = obj["cfg"][i]["server"][j]["name"].ToString();
    169                         var server_ip = obj["cfg"][i]["server"][j]["ip"].ToString();
    170                         var program_name = obj["cfg"][i]["server"][j]["program"][k]["name"].ToString();
    171                         var program_note = obj["cfg"][i]["server"][j]["program"][k]["note"].ToString();
    172                         //sb.Append($"<tr><td>{func}</td><td>{server_name}-{server_ip}</td><td>{program_name}</td><td>running</td><td>12:00</td><td>15:00</td><td>{program_note}</td></tr>");
    173 
    174                         if (k == 0)
    175                         {
    176                             //sb.Append($"<tr><td>{func}</td><td rowspan='{((JContainer)obj["cfg"][i]["server"][j]["program"]).Count}'>{server_name}-{server_ip}</td><td>{program_name}</td><td>running</td><td>12:00</td><td>15:00</td><td>{program_note}</td></tr>");
    177                             if (j == 0)
    178                             {
    179                                 var func_rowspan = 0;
    180                                 for (int x = 0; x < ((JContainer)obj["cfg"][i]["server"]).Count; x++)
    181                                 {
    182                                     func_rowspan += ((JContainer)obj["cfg"][i]["server"][x]["program"]).Count;
    183                                 }
    184                                 sb.Append($"<tr><td rowspan='{func_rowspan}'>{func}</td><td rowspan='{((JContainer)obj["cfg"][i]["server"][j]["program"]).Count}'>{server_name}-{server_ip}</td><td>{program_name}</td><td>running</td><td>12:00</td><td>15:00</td><td>{program_note}</td></tr>");
    185                             }
    186                             else
    187                             {
    188                                 sb.Append($"<tr><td rowspan='{((JContainer)obj["cfg"][i]["server"][j]["program"]).Count}'>{server_name}-{server_ip}</td><td>{program_name}</td><td>running</td><td>12:00</td><td>15:00</td><td>{program_note}</td></tr>");
    189                             }
    190                         }
    191                         else
    192                         {
    193                             //sb.Append($"<tr><td>{func}</td><td>{program_name}</td><td>running</td><td>12:00</td><td>15:00</td><td>{program_note}</td></tr>");
    194                             if (j == 0)
    195                             {
    196                                 var func_rowspan = 0;
    197                                 for (int x = 0; x < ((JContainer)obj["cfg"][i]["server"]).Count; x++)
    198                                 {
    199                                     func_rowspan += ((JContainer)obj["cfg"][i]["server"][x]["program"]).Count;
    200                                 }
    201                                 sb.Append($"<tr><td rowspan='{func_rowspan}'>{func}</td><td>{program_name}</td><td>running</td><td>12:00</td><td>15:00</td><td>{program_note}</td></tr>");
    202                             }
    203                             else
    204                             {
    205                                 sb.Append($"<tr><td>{program_name}</td><td>running</td><td>12:00</td><td>15:00</td><td>{program_note}</td></tr>");
    206                             }
    207                         }
    208 
    209                     }
    210                 }
    211             }
    212 
    213             sb.Append("</table>");
    214             return sb.ToString();
    215 
    216         }
    217 
    218         //算法优化
    219         public static string HtmlTable5()
    220         {
    221             var cfgPath = $"{HttpContext.Current.Server.MapPath("~/cfg.json")}";
    222             var str = File.ReadAllText(cfgPath);
    223             var obj = JObject.Parse(str);
    224 
    225             StringBuilder sb = new StringBuilder();
    226             sb.Append("<table>");
    227             sb.Append("<thead><tr><th>功能</th><th>服务器IP</th><th>程序名称</th><th>运行状态</th><th>最近运行时间</th><th>下次运行时间</th><th>note</th></tr></thead>");
    228 
    229             for (int i = 0; i < ((JContainer)obj["cfg"]).Count; i++)
    230             {
    231                 var func_rowspan = 0;
    232                 for (int x = 0; x < ((JContainer)obj["cfg"][i]["server"]).Count; x++)
    233                 {
    234                     func_rowspan += ((JContainer)obj["cfg"][i]["server"][x]["program"]).Count;
    235                 }
    236 
    237                 for (int j = 0; j < ((JContainer)obj["cfg"][i]["server"]).Count; j++)
    238                 {
    239                     for (int k = 0; k < ((JContainer)obj["cfg"][i]["server"][j]["program"]).Count; k++)
    240                     {
    241                         var func = obj["cfg"][i]["func"].ToString();
    242                         var server_name = obj["cfg"][i]["server"][j]["name"].ToString();
    243                         var server_ip = obj["cfg"][i]["server"][j]["ip"].ToString();
    244                         var program_name = obj["cfg"][i]["server"][j]["program"][k]["name"].ToString();
    245                         var program_note = obj["cfg"][i]["server"][j]["program"][k]["note"].ToString();
    246                         
    247                         if (k == 0)
    248                         {
    249                             if (j == 0)
    250                             {
    251                                 sb.Append($"<tr><td rowspan='{func_rowspan}'>{func}</td><td rowspan='{((JContainer)obj["cfg"][i]["server"][j]["program"]).Count}'>{server_name}-{server_ip}</td><td>{program_name}</td><td>running</td><td>12:00</td><td>15:00</td><td>{program_note}</td></tr>");
    252                             }
    253                             else
    254                             {
    255                                 sb.Append($"<tr><td rowspan='{((JContainer)obj["cfg"][i]["server"][j]["program"]).Count}'>{server_name}-{server_ip}</td><td>{program_name}</td><td>running</td><td>12:00</td><td>15:00</td><td>{program_note}</td></tr>");
    256                             }
    257                         }
    258                         else
    259                         {
    260                             if (j == 0)
    261                             {
    262                                 sb.Append($"<tr><td rowspan='{func_rowspan}'>{func}</td><td>{program_name}</td><td>running</td><td>12:00</td><td>15:00</td><td>{program_note}</td></tr>");
    263                             }
    264                             else
    265                             {
    266                                 sb.Append($"<tr><td>{program_name}</td><td>running</td><td>12:00</td><td>15:00</td><td>{program_note}</td></tr>");
    267                             }
    268                         }
    269 
    270                     }
    271                 }
    272             }
    273 
    274             sb.Append("</table>");
    275             return sb.ToString();
    276 
    277         }
    278 
    279         public static string HtmlTable6()
    280         {
    281             var cfgPath = $"{HttpContext.Current.Server.MapPath("~/cfg.json")}";
    282             var str = File.ReadAllText(cfgPath);
    283             var obj = JObject.Parse(str);
    284 
    285             StringBuilder sb = new StringBuilder();
    286             sb.Append("<table>");
    287             sb.Append("<thead><tr><th>功能</th><th>服务器IP</th><th>程序名称</th><th>运行状态</th><th>最近运行时间</th><th>下次运行时间</th><th>note</th></tr></thead>");
    288 
    289             for (int i = 0; i < ((JContainer)obj["cfg"]).Count; i++)
    290             {
    291                 var func_rowspan = 0;
    292                 for (int x = 0; x < ((JContainer)obj["cfg"][i]["server"]).Count; x++)
    293                 {
    294                     func_rowspan += ((JContainer)obj["cfg"][i]["server"][x]["program"]).Count;
    295                 }
    296 
    297                 for (int j = 0; j < ((JContainer)obj["cfg"][i]["server"]).Count; j++)
    298                 {
    299                     //TODO
    300                     //GetAllTasks(object serverName, object user, object domain, object password)
    301 
    302                     var tasks = SchTaskExt.GetAllTasks();
    303 
    304                     for (int k = 0; k < ((JContainer)obj["cfg"][i]["server"][j]["program"]).Count; k++)
    305                     {
    306                         var func = obj["cfg"][i]["func"].ToString();
    307                         var server_name = obj["cfg"][i]["server"][j]["name"].ToString();
    308                         var server_ip = obj["cfg"][i]["server"][j]["ip"].ToString();
    309                         var program_name = obj["cfg"][i]["server"][j]["program"][k]["name"].ToString();
    310                         var program_note = obj["cfg"][i]["server"][j]["program"][k]["note"].ToString();
    311 
    312                         var State = "";
    313                         var LastRunTime = "";
    314                         var NextRunTime = "";
    315 
    316                         IRegisteredTask task = null;
    317                         try
    318                         {
    319                             task = tasks[program_name];
    320                             State = task.State.ToString();
    321                             LastRunTime = task.LastRunTime.ToString();
    322                             NextRunTime = task.NextRunTime.ToString();
    323                         }
    324                         catch (System.Exception)
    325                         {
    326                         }
    327 
    328                         if (k == 0)
    329                         {
    330                             if (j == 0)
    331                             {
    332                                 sb.Append($"<tr><td rowspan='{func_rowspan}'>{func}</td><td rowspan='{((JContainer)obj["cfg"][i]["server"][j]["program"]).Count}'>{server_name}-{server_ip}</td><td>{program_name}</td><td>{State}</td><td>{LastRunTime}</td><td>{NextRunTime}</td><td>{program_note}</td></tr>");
    333                             }
    334                             else
    335                             {
    336                                 sb.Append($"<tr><td rowspan='{((JContainer)obj["cfg"][i]["server"][j]["program"]).Count}'>{server_name}-{server_ip}</td><td>{program_name}</td><td>{State}</td><td>{LastRunTime}</td><td>{NextRunTime}</td><td>{program_note}</td></tr>");
    337                             }
    338                         }
    339                         else
    340                         {
    341                             //if (j == 0)
    342                             //{
    343                             //    sb.Append($"<tr><td rowspan='{func_rowspan}'>{func}</td><td>{program_name}</td><td>{State}</td><td>{LastRunTime}</td><td>{NextRunTime}</td><td>{program_note}</td></tr>");
    344                             //}
    345                             //else
    346                             //{
    347                             //    sb.Append($"<tr><td>{program_name}</td><td>{State}</td><td>{LastRunTime}</td><td>{NextRunTime}</td><td>{program_note}</td></tr>");
    348                             //}
    349                             sb.Append($"<tr><td>{program_name}</td><td>{State}</td><td>{LastRunTime}</td><td>{NextRunTime}</td><td>{program_note}</td></tr>");
    350                         }
    351 
    352                     }
    353                 }
    354             }
    355 
    356             sb.Append("</table>");
    357             return sb.ToString();
    358 
    359         }
    360 
    361 
    362 
    363     }
    364 }
    View Code

    还有连接远程服务器的问题:

    https://www.cnblogs.com/tonge/p/4410066.html

    远程服务器可以的,可以不加域。本地账号也认的(域留空就行)。

    还有就是可以用windows自带的token方式connect :https://docs.microsoft.com/zh-cn/windows/win32/api/taskschd/nf-taskschd-itaskservice-connect

  • 相关阅读:
    ionic app打包和签名
    js时间戳与日期格式的相互转换
    js获取选中日期的当周的周一和周日
    Error occurred during initialization of VM Could not reserve enough space for 2097152KB object heap
    CSS媒体查询 @media
    [ng:areq] Argument 'XXXXCtrl' is not a function, got undefined
    plsql如何导出查询结果
    angularjs的$http请求方式
    JQuery请求数据的方式
    后台返回xml格式转json
  • 原文地址:https://www.cnblogs.com/mmclog/p/14667975.html
Copyright © 2011-2022 走看看