最近在公司制作项目时,有一个需求需要在.net制作的winform程序里,对同网段内的树莓派设置固定IP.

废话不多说,直接上代码!

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Threading.Tasks;
 5 using System.IO;
 6 using System.Diagnostics;
 7 using System.Text;
 8 using System.Globalization;
 9 
10 namespace TodoApi
11 {
12     public class HardWorkHelper
13     {
14         public string SetupStatusIP(string ipAddress)
15         {
16             try
17             {
18                 string routers = ipAddress.Substring(0, ipAddress.LastIndexOf("."));
19 
20                 RunCommand("chmod 666 /etc/dhcpcd.conf");
21                 using (FileStream fs = new FileStream("/etc/dhcpcd.conf", FileMode.Open, FileAccess.Write))
22                 {
23                     StreamWriter sw = new StreamWriter(fs);
24                     sw.BaseStream.Seek(0, SeekOrigin.End);
25                     sw.WriteLine(Environment.NewLine);//换行
26                     sw.WriteLine("interface eth0");
27                     sw.WriteLine(Environment.NewLine);//换行
28                     sw.WriteLine(string.Format("static ip_address={0}/24", ipAddress));
29                     sw.WriteLine(Environment.NewLine);//换行
30                     sw.WriteLine(string.Format("static routers={0}.1", routers));
31                     sw.WriteLine(Environment.NewLine);//换行
32                     sw.WriteLine("static domain_name_servers=114.114.114.114");
33                     sw.WriteLine(Environment.NewLine);//换行
34                     sw.WriteLine("interface wlan0");
35                     sw.WriteLine(Environment.NewLine);//换行
36                     sw.WriteLine(string.Format("static ip_address={0}/24", ipAddress));
37                     sw.WriteLine(Environment.NewLine);//换行
38                     sw.WriteLine(string.Format("static routers={0}.1", routers));
39                     sw.WriteLine(Environment.NewLine);//换行
40                     sw.WriteLine("static domain_name_servers= 114.114.114.114");
41                     sw.Flush();
42                     sw.Close();
43                     fs.Close();
44                 }
45 
46                 RunCommand("chmod 555 /etc/dhcpcd.conf");
47                 RunCommand("reboot");
48 
49                 return "Set OK New";
50             }
51             catch (Exception ex)
52             {
53                 return ex.Message;
54             }
55         }
56 
57         private void RunCommand(string command)
58         {
59             System.Diagnostics.Process.Start("sudo", command);
60         }
61     }
62 }
View Code

 

附:做了本次产品后发现.net Core的确很不错,是.net家族跨平台的一个优秀的解决方案.但是网上的资料是在太少,希望抛砖引玉能让更多的人来使用它.

posted on 2020-03-11 15:43  JerryBolgs  阅读(167)  评论(0)    收藏  举报