最近在公司制作项目时,有一个需求需要在.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 }
附:做了本次产品后发现.net Core的确很不错,是.net家族跨平台的一个优秀的解决方案.但是网上的资料是在太少,希望抛砖引玉能让更多的人来使用它.