502 bad gateway 最最烦人了,总是时不时的出现,昨天晚上blog就是出现了这样的问题,一直没有发现,今天早上才发现的,google的收录出现出错~
网页也是无法打开,但是SSH可以使用,无奈只能重启VPS了。
google了一下,解决502 bad gateway的最好最终极的方法就是重启php-fpm.
参考http://www.hostloc.com/viewthread.php?tid=19208&extra=&page=1这里的方法
使用了AA大大的脚本!
引用cd /homemkdir script
cd script
vim restart-php-fpm.phps
在新建的restart-php-fpm.phps输入代码:
引用#!/usr/bin/php
<?
$url = ‘http://www.diahosting.com’;
$cmd = ‘/usr/local/php/sbin/php-fpm restart’;for($i = 0; $i < 5; $i ++){
$exec = “curl –connect-timeout 3 -i $url 2>/dev/null”;
$res = shell_exec($exec);if(stripos($res, ’502 Bad Gateway’) !== false){
shell_exec($cmd);
exit();
}
}
?>
:wq 保存之!
引用chmod 755 /home/script/restart-php-fpm.phpscrontab -e
输入执行的代码: * * * * * /home/script/restart-php-fpm.phps
上面代码的意思是:每分钟执行一次phps的脚本文件~
:wq 保存之!
注意:*之间有空格!
查看设置成功还是失败
crontab -l
输出你要执行的命令,那么就OK啦!
这样就不需要害怕502 bad gateway~
但是vps系统还是要注意的,不知道什么时候会卡死,还是自动重启比较保险的!
UnixBench is the original BYTE UNIX benchmark suite, updated and revised by many people over the years.
The purpose of UnixBench is to provide a basic indicator of the performance of a Unix-like system; hence, multiple tests are used to test various aspects of the system's performance. These test results are then compared to the scores from a baseline system to produce an index value, which is generally easier to handle than the raw scores. The entire set of index values is then combined to make an overall index for the system.
在 Web Hosting Talk 上,有一个有关 Unix Bench 历时五年的讨论,许多站长将他们的主机分值纷纷贴在上面,目前已长达100多页,有兴趣可以看看:VPS vs. Dedicated - New Benchmark Results (注:从天朝访问此站可能需要翻墙)。
如何使用 Unix Bench
使用 Unix Bench 很简单。通过 SSH 登录到你的 Dedicated Host 或 VPS 之后,依次执行下列命令:
wget http://byte-unixbench.googlecode.com/files/unixbench-5.1.2.tar.gz
tar xzf unixbench-5.1.2.tar.gz
cd unixbench-5.1.2
make
./Run
需要注意的是:有些主机商提供的独立主机和 VPS,默认是最小安装,没有安装 gcc 等开发编译工具。如果 make 的过程中出错,提示没有 gcc 模块,则需要先装上 gcc。例如以 CentOS 为例,可直接通过执行 yum -y install gcc 安装。
执行 ./Run 之后,等上大约 15 分钟左右的时候,就可以看到测试结果了。
你的主机 Unix Bench 测试分值是多少?欢迎在评论中贴出来。
一、安装KLOXO
使用putty登录Linux。
安装kloxo
wget http://download.lxlabs.com/download/kloxo/production/kloxo-install-master.sh
sh ./kloxo-install-master.sh
国内主机可能安装要慢点了,因为是在线安装(更新源在国外),使用美国主机的朋友们很快就能安装完了。
安装完后你除了安好Lxadmin,同时也基本安好了Apache、Lighttpd、MySQL、Xcache、Bind、Djbdns等一系列服务器软件。
yum install php-bcmath /*高精度数学运算组件,默认没安装,MD5运算时用到*/
yum install php-mhash
yum install php-mbstring
yum check-update (检查更新)
yum update (更新所有更新)
yum install php-bcmath (比较重要的php组件,默认没安装)
yum clean all (清理安装包)
基本完成,可以把终端关闭了。我们来登录Lxadmin,第一次登陆用户名和密码都是admin,地址:
https://IP:7777/ /*安全连接,不过默认证书不受IE信任*/
http://IP:7778/ /*还是用这个普通链接吧*/
Zend可以在Lxadmin后台的PHPConfig里启用,Apache可以从SwichProgram里选择,建议先选择lighttpd和bind然后再选回apache和djbdns,否则你会看到内存占用量很高。
新手建议用Apache,99%能正常支持.htaccess的rewrite规则。
二、安装中文语言包看一参考本文:
2.进入lang目录:
$ cd /usr/local/lxlabs/lxadmin/httpdocs/lang kloxo的是:cd /usr/local/lxlabs/kloxo/httpdocs/lang
3.下载语言包:
$ wget http://soft.vpser.net/lxadmin/lxadmin_cn_pack.zip
4.解压:
$ unzip lxadmin_cn_pack.zip
(如果没有安装unzip命令请执行yum -y install unzip进行安装)
5. 访问http://你的IP:7778/ 进行lxadmin语言设置
在Appearance->Language里选择Chinese,然后点击update确认.
另外,安装完后需要修改/etc/httpd/conf/httpd.conf 查找:AddDefaultCharset UTF-8 改为:AddDefaultCharset OFF ,这样就会引起网页的乱码问题。
Kloxo是一款比较适合Linux新手使用的轻量级VPS控制面板;最近在安装使用Kloxo时遇到了安装完Kloxo后遇到无法连接Mysql,也不支持GD。
根据之前对Kloxo的了解应该是安装的64位CentOS的原因。
/etc/php.ini中extension_dir = /usr/lib/php/modules 如果系统是32位,则会存在这个目录,如果64位就没有,但是位于/usr/lib64/php/modules ,但是如果仅仅修改extension_dir是不够的。
第一种解决方法:直接重装为32位CentOS,再重新安装Kloxo。
第二种方法:创建软连接,将/usr/lib/php/指向到/usr/lib64/php/
执行: ln -s /usr/lib64/php/ /usr/lib
重启Apache: /etc/rc.d/init.d/httpd restart
再去检查一遍环境,现在显示都支持了。
有部分童鞋在安装完kloxo以后,喜欢上传个探针,看看Apache或者lighttpd占用多少内存,但是发现探针里并不会显示出来当前的CPU和内存占用信息,这是为什么呢?
原因就是kloxo作了安全方面的限制,限制了PHP能读取的目录,只要我们在kloxo的配置文件中取消这个限制就可以了。
解决方法:
编辑“/home/httpd/域名/conf/kloxo.域名”这个文件。
比如,我绑定的域名是zhukun.net,那就编辑“/home/httpd/zhukun.net/conf/kloxo.zhukun.net”这个文件
删掉其中open_basedir部分的内容(一共有四处),然后service httpd restart,打开探针就会发现CPU信息和内存信息已经显示出来了
目录:
1.BasicInstructions/基本
2.wget/下载工具
3.Crontab/定时任务
4.tar/tar.gz/压缩文件
5.vi/编辑器
cd[目录名]转换路径
cd.. 返回上级目录
ls显示当前目录下所有文件
rm[-r]-f[][文件名]删除文件,加[-r]可以删除文件下所有子文件,如rm -rf [abc]删除abc文件夹及文件夹下的所有文件
tar -xzf [解压下载的压缩包]
unzip[文件名]解压文件
cp -rpf .A/* B 将A文件夹中的所有文件拷贝到其上级目录B中
wget(没用过,据说是最实用的一个,否则那200G估计每天不掉线才有可能用完)
1.BasicInstructions基本操作命令
通常来说,使用”$[Instructions]–help”可以获得以下各个命令[instructions]的帮助,包含其参
数列表的定义。
-ls列出当前文件夹下所有内容
$ls-o列出当前文件夹中所有内容,含详细信息,但不列出group
$ls-l同上,含group信息
$ls-a列出当前文件夹中所有内容,包含以”.”开头的文件
$ls-t按更改时间排序
$ls-v按版本
-cd [dir] 进入文件夹
cd.. 退出当前文件夹,返回上级目录
-pwd 显示当前路径
-mkdir [dir] 新建文件夹
-chmod更改文件/文件夹权限
$chmod [Mode] [dir],其中Mode形如”755″或”777″等。
$chmod [Mode] [file]
$chmod -R [Mode] [dir],递归形式,即将目标文件夹内所有文件均改变权限
Mode还有另一种表达方式,”755″即为”-rwxr-xr-x”,不列举了。
-rm [file]删除文件/文件夹
$rm-f [file]强行删除,忽略不存在的文件,无提示
$rm-r [file]递归删除所有内容
$rm -rf 删除文件夹
-cp拷贝
$cp [options] [source] [destination]
其中[options]可以为-f(强行拷贝)或-r(递归拷贝)
-mv重命名或移动
$mv[options][source][destination]
[options]常用:-f(强行移动/重命名),-i(移动/重命名前尝试),-u(更新)
例如
$mvwwwroot/cgi-bin.将/cgi-bin目录移动到当前目录下
$mvcronfile.txtmyfile.txt将cronfile.txt重命名为myfile.txt
cp -rpf .A/* B 将A文件夹中的所有文件拷贝到其上级目录B中
2.wget下载工具
wget是一种非交互式的网络文件下载工具,在linux下可以使用该工具快速地从网络上下载
所需要的文件而不需要经由本
wget[参数列表]URL
最简单的用法:
$wget http://dupola.com/file.tar
wget的常用参数:-t[nuberoftimes]:尝试次数,当wget无法与服务器建立连接时,尝试连接多少次。比
如”-t120″表示尝试120次。当这一项为”0″的时候,指定尝试无穷多次直到连接成功为止,
这个设置非常有用,当对方服务器突然关机或者网络突然中断的时候,可以在恢复正常后继
续下载没
有传完的文件;-c:断点续传,这也是个非常有用的设置,特别当下载比较大的文件的时候,如果中途意外中断,那么连接恢复的时候会从上
次没传完的地方接着传,而不是又从头开始,使用这一项需要远程服务器也支持断点续传,一般UNIX/linux的Web/FTP服务器都支
持断点续传;-T[numberofseconds]:超时时间,指定多长时间远程服务器没有响应就中断连接,开始
下一次尝试。比如”-T120″表示如果120秒以后远程服务器没有发过来数据,就重新尝试连
接。如果网络速度比较快,这个时间可以设置的短些,相反,可以设置的长一些,一般最多
不超过900,通常也不少于60,一般120左右比较合适;-w[numberofseconds]:在两次尝试之间等待多少秒,比如”-w100″表示两次尝试之间等
待100秒;-nd:不下载目录结构,把从服务器所有指定目录下载的文件都堆到当前目录里;-x:与”-nd”设置刚好相反,创建完整的目录结构,
例如”wget-ndhttp://www.gnu.org/”,
实际的目录结构一级一级建下去,直到所有的文件都传完为止;-nH:不创建以目标主机域名为目录名的目录,将目标主机的目录结构直接下到
当前目录
下;-r:递归下载,在本录结构;-l[depth]:下载远程服务器目录结构的深度,例如”-l5″下载目录深度小于或者等于5以
内的目录结构或者文件;
-m:做站点镜像时的选项,如果你想做一个站点的镜像,使用这个选项,它将自动设定
其他合适的选项以便于站点镜像;-np:只下载目标站点指定目录及其子目录的内容。这也是一个非常有用的选项,我们假
设某个人的个人主页里面有一个指向这个站点其他人个人主页的连接,而我们只想下载这个
人的个人主页,如果不设置这个选项,甚至–有可能把整个站点给抓下来,这显然是我们通
常不希望的;–http-user=username–http-passwd=password:如果Web服务器需要指定用户名和口令,用这两项来设定;-O将数据写入文件中。
3.Crontab定时执行任务
在DreamHost系统下,通过Shell可以建立自己的crontab.具体使用如下:
使用支持shell登录的终端(如fterm或putty),地址栏输入username@domain.com:22即可以SSH
方式登录至服务器.
常用的crontab命令:
crontab-l显示所有现存cronjob.
crontab-r删除当前cronjobs.
crontab-e编辑当前”crontabfile”.DH推荐使用nano
注意你的crontab包含所有的cronjobs,每个cron一行,断行结尾.一个正常的cron如下所
示:
452***/home/user/script.pl
第一个数字是每小时的第几分钟,
第二个数字是每天的第几小时,
第三个数字是每月的第几天,
第四个数字是每年的第几月,
第五个数字是每周的第几天.
使用方式例如:
32 * * * * : 表示每小时的第32分钟.
12,42 * * * * : 表示每小时的第12及第42分钟两次
*/15 */2 * * *: 表示0:00, 0:15, 0:30, 0:45, 2:00, 2:15, 2:30, …
43 18 * * 7: 表示每个周日的6:43pm运行命令行.
在DreamHost下使用nano编辑完文件后,使用ctrl+o保存,ctrl+x退出编辑。
4.tar命令
tar命令的使用方法如下:
tar[参数列表][文件名]
参数列表:
-c生成新的备份,并同时覆盖旧的备份文件
-x从备份文件中解压缩
-t列出备份文件内的文件目录
-v显示所有被操作文件列表
-f在指定位置生成备份
-u将不存在于备份中的文件,或将已经被更改的文件加入该备份中。
举例说明:
tar cvf filename.tar /*制作备份*/
tar cvf tarfile.tar ./filename /*将filename的文件备份到tarfile.tar里面*/
tar tvf filename.tar /*列出tar文档的内容*/
tar xvf filename.tar /*从tar文档中导出文件*/
tar zxpvf filename.tar.gz /*从tar.gz文档中导出文件*/
tar zxvf filename.tar.gz /*同上*/
tar xvf tarfile.tar ./filename /*导出tar文件中的单个文件*/
tar -xzf filename.tar.gz 解压
5.vi编辑器
Linux下很易用的一种编辑器,只需要稍微知道几个指令即可应用。
打开vi:
$vi [filename]:打开或新建文件,并将光标置于第一行首
$vi +n [filename] :打开文件,并将光标置于第n行首
$vi + [filename] :打开文件,并将光标置于最后一行首
$vi +/pattern [filename]:打开文件,并将光标置于第一个与pattern匹配的串处
$vi -r [filename] :在上次正用vi编辑时发生系统崩溃,恢复filename
$vi [filename]….[filename] :打开多个文件,依次编辑
如果filename不存在,则自动生成一个名字filename的新文件。
vi共有两种状态:命令状态/编辑状态
编辑状态下:
第次按下insert键为”insert”模式,再按一下为”replace”模式,使用ESC返回命令状态;
在此状态下键盘的PgUp/PgDn/Insert/Delete/Home/End/方向键,均处于正常功能状态。
命令状态下:
输入的字符串作为命令处理,使用”insert”键切换到编辑状态;
以下是命令状态下的命令清单:
移动光标类命令
h :光标左移一个字符
l :光标右移一个字符
space:光标右移一个字符
Backspace:光标左移一个字符
k或Ctrl+p:光标上移一行
j或Ctrl+n :光标下移一行
Enter :光标下移一行
w或W :光标右移一个字至字首
b或B :光标左移一个字至字首
e或E :光标右移一个字j至字尾
) :光标移至句尾
( :光标移至句首
}:光标移至段落开头
{:光标移至段落结尾
nG:光标移至第n行首
n+:光标下移n行
n-:光标上移n行
n$:光标移至第n行尾
H :光标移至屏幕顶行
M :光标移至屏幕中间行
L :光标移至屏幕最后行
0:(注意是数字零)光标移至当前行首
$:光标移至当前行尾
屏幕翻滚类命令
Ctrl+u:向文件首翻半屏
Ctrl+d:向文件尾翻半屏
Ctrl+f:向文件尾翻一屏
Ctrl+b;向文件首翻一屏
nz:将第n行滚至屏幕顶部,不指定n时将当前行滚至屏幕顶部。
插入文本类命令
i :在光标前
I :在当前行首
a:光标后
A:在当前行尾
o:在当前行之下新开一行
O:在当前行之上新开一行
r:替换当前字符
R:替换当前字符及其后的字符,直至按ESC键
s:从当前光标位置处开始,以输入的文本替代指定数目的字符
S:删除指定数目的行,并以所输入文本代替之
ncw或nCW:修改指定数目的字
nCC:修改指定数目的行
删除命令
ndw或ndW:删除光标处开始及其后的n-1个字
do:删至行首
d$:删至行尾
ndd:删除当前行及其后n-1行
x或X:删除一个字符,x删除光标后的,而X删除光标前的
Ctrl+u:删除输入方式下所输入的文本
搜索及替换命令 :
/pattern:从光标开始处向文件尾搜索pattern
?pattern:从光标开始处向文件首搜索pattern
n:在同一方向重复上一次搜索命令
N:在反方向上重复上一次搜索命令
:s/p1/p2/g:将当前行中所有p1均用p2替代
:n1,n2s/p1/p2/g:将第n1至n2行中所有p1均用p2替代
:g/p1/s//p2/g:将文件中所有p1均用p2替换
选项设置
all:列出所有选项设置情况
term:设置终端类型
ignorance:在搜索中忽略大小写
list:显示制表位(Ctrl+I)和行尾标志($)
number:显示行号
report:显示由面向行的命令修改过的数目
terse:显示简短的警告信息
warn:在转到别的文件时若没保存当前文件则显示NO write信息
nomagic:允许在搜索模式中,使用前面不带”\”的特殊字符
nowrapscan:禁止vi在搜索到达文件两端时,又从另一端开始
mesg:允许vi显示其他用户用write写到自己终端上的信息
最后行方式命令
:n1,n2 co n3:将n1行到n2行之间的内容拷贝到第n3行下
:n1,n2 m n3:将n1行到n2行之间的内容移至到第n3行下
:n1,n2 d :将n1行到n2行之间的内容删除
:w :保存当前文件
:e filename:打开文件filename进行编辑
:x:保存当前文件并退出
:q:退出vi
:q!:不保存文件并退出vi
:!command:执行shell命令command
:n1,n2 w!command:将文件中n1行至n2行的内容作为command的输入并执行之,若不指定n1,n2,则表示将整个文件内容作为command的输入
:r!command:将命令command的输出结果放到当前行 。
到现在为止,你已经成功登录SSH了!你可以输入help来查看帮助,输入ls查看你的目录情况,etc.
退出SSH,输入:
exit
会出现提示:
logout
Connection to 208.113.155.137 closed.
----------------------------
MySQL相关
----------------------------
update:登录SSH后才可操作MySQL!
登录MySQL,输入:
mysql -u username -p -h 208.113.129.128
username替代为你的帐号;出现下面这个提示后输入密码:
Enter password:
接着,登录mysql数据库成功,出现下面提示:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3602 to server version: 5.0.18-standard-log
Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the buffer.
查看你的数据库:
show databases;
导入数据库内容。首先要选择你要导入内容的数据库:
use database;
将database更改为你导入数据库内容的数据库名称。在导入数据库前,确认你已经把导出的数据库文件上传到FTP目录下。例如,我在WP利用插件导出的备份,解压有一个后缀为”.sql”的文件,把这个上传到你的FTP目录下即可;不用放进目录下面,直接上传就可以了。继续原来的话题,输入下面命令导入数据库:
source wp.sql
其中wp.sql是你的数据库备份文件的名称。
退出mysql:
\q
查看mysql的帮助(用途不大):
\h
PS:主要是[]里的名称,在这里备个份
using System;
using System.Collections.Generic;
using System.Text;
using System.Management;
using System.Net.Sockets;
using System.Net;
namespace SystemInfo
{
class Program
{
static void Main(string[] args)
{
try
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("正在检测请稍候");
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine("===================================");
Console.WriteLine("操作系统信息");
Console.WriteLine("===================================");
ManagementObjectSearcher searcher =
new ManagementObjectSearcher("root\\CIMV2",
"SELECT * FROM Win32_OperatingSystem");
foreach (ManagementObject queryObj in searcher.Get())
{
Console.WriteLine("-----------------------------------");
Console.WriteLine("系统名称: {0}", queryObj["Caption"]);
Console.WriteLine("版本: {0}", queryObj["CSDVersion"]);
Console.WriteLine("计算机名称: {0}", queryObj["CSName"]);
Console.WriteLine("单位: {0}", queryObj["Organization"]);
Console.WriteLine("注册用户: {0}", queryObj["RegisteredUser"]);
Console.WriteLine("序列号: {0}", queryObj["SerialNumber"]);
Console.WriteLine("系统所在分区: {0}", queryObj["SystemDrive"]);
Console.WriteLine("系统目录: {0}", queryObj["WindowsDirectory"]);
Console.WriteLine("系统System32所在目录: {0}", queryObj["SystemDirectory"]);
Console.WriteLine("可用内存: {0}", queryObj["TotalVisibleMemorySize"]);
Console.WriteLine("版本号: {0}", queryObj["Version"]);
Console.WriteLine("-----------------------------------");
}
Console.WriteLine("===================================");
Console.WriteLine("BIOS信息");
Console.WriteLine("===================================");
searcher =
new ManagementObjectSearcher("root\\CIMV2",
"SELECT * FROM Win32_SystemBIOS");
foreach (ManagementObject queryObj in searcher.Get())
{
Console.WriteLine("-----------------------------------");
Console.WriteLine("汇总信息: {0}", queryObj["PartComponent"]);
Console.WriteLine("-----------------------------------");
}
Console.WriteLine("===================================");
Console.WriteLine("计算机系统信息");
Console.WriteLine("===================================");
searcher =
new ManagementObjectSearcher("root\\CIMV2",
"SELECT * FROM Win32_ComputerSystem");
foreach (ManagementObject queryObj in searcher.Get())
{
Console.WriteLine("-----------------------------------");
Console.WriteLine("计算机全称: {0}", queryObj["Name"]);
Console.WriteLine("处理器数量: {0}", queryObj["NumberOfProcessors"]);
Console.WriteLine("描述: {0}", queryObj["Description"]);
Console.WriteLine("域: {0}", queryObj["Domain"]);
Console.WriteLine("系统类型: {0}", queryObj["SystemType"]);
Console.WriteLine("实际内存: {0}", queryObj["TotalPhysicalMemory"]);
Console.WriteLine("用户名: {0}", queryObj["UserName"]);
Console.WriteLine("-----------------------------------");
}
searcher =
new ManagementObjectSearcher("root\\CIMV2",
"SELECT * FROM Win32_Processor");
Console.WriteLine("===================================");
Console.WriteLine("CPU信息");
Console.WriteLine("===================================");
foreach (ManagementObject queryObj in searcher.Get())
{
Console.WriteLine("-----------------------------------");
Console.WriteLine("编号: {0}", queryObj["DeviceID"]);
Console.WriteLine("CPU序列号: {0}", queryObj["ProcessorId"]);
Console.WriteLine("Cpu状态: {0}", queryObj["CpuStatus"]);
Console.WriteLine("类别: {0}", queryObj["Caption"]);
Console.WriteLine("名称: {0}", queryObj["Name"]);
Console.WriteLine("描述: {0}", queryObj["Description"]);
Console.WriteLine("寻址: {0}", queryObj["AddressWidth"]);
Console.WriteLine("数据带宽: {0}", queryObj["DataWidth"]);
Console.WriteLine("时钟频率: {0}", queryObj["CurrentClockSpeed"]);
Console.WriteLine("最高时钟频率: {0}", queryObj["MaxClockSpeed"]);
Console.WriteLine("版本: {0}", queryObj["Version"]);
Console.WriteLine("电压: {0}", queryObj["CurrentVoltage"]);
Console.WriteLine("二级缓容量: {0}", queryObj["L2CacheSize"]);
Console.WriteLine("二级缓频率: {0}", queryObj["L2CacheSpeed"]);
Console.WriteLine("CPU制造商: {0}", queryObj["Manufacturer"]);
Console.WriteLine("-----------------------------------");
}
searcher =
new ManagementObjectSearcher("root\\CIMV2",
"SELECT * FROM Win32_LogicalDisk");
Console.WriteLine();
Console.WriteLine("===================================");
Console.WriteLine("硬盘信息");
Console.WriteLine("===================================");
foreach (ManagementObject queryObj in searcher.Get())
{
Console.WriteLine("-----------------------------------");
Console.WriteLine("卷标: {0}", queryObj["VolumeName"]);
Console.WriteLine("序列号: {0}", queryObj["VolumeSerialNumber"]);
Console.WriteLine("驱动器号: {0}", queryObj["Name"]);
Console.WriteLine("分区大小: {0}", queryObj["Size"]);
Console.WriteLine("可用空间: {0}", queryObj["FreeSpace"]);
Console.WriteLine("文件系统: {0}", queryObj["FileSystem"]);
Console.WriteLine("描述: {0}", queryObj["Description"]);
Console.WriteLine("-----------------------------------");
}
Console.WriteLine();
Console.WriteLine("===================================");
Console.WriteLine("网卡信息");
Console.WriteLine("===================================");
searcher =
new ManagementObjectSearcher("root\\CIMV2",
"SELECT * FROM Win32_NetworkAdapter WHERE MACAddress = '00:0D:61:70:6B:90'");
foreach (ManagementObject queryObj in searcher.Get())
{
Console.WriteLine("-----------------------------------");
Console.WriteLine("名称: {0}", queryObj["Name"]);
Console.WriteLine("说明: {0}", queryObj["Caption"]);
Console.WriteLine("描述: {0}", queryObj["Description"]);
Console.WriteLine("MAC地址: {0}", queryObj["MACAddress"]);
Console.WriteLine("GUID: {0}", queryObj["GUID"]);
Console.WriteLine("适配器类型: {0}", queryObj["AdapterType"]);
Console.WriteLine("-----------------------------------");
}
Console.WriteLine();
Console.WriteLine("===================================");
Console.WriteLine("网络信息");
Console.WriteLine("===================================");
searcher = new ManagementObjectSearcher("root\\CIMV2",
"SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = 'TRUE'");
// Every record in this collection is a network interface
foreach (ManagementObject mo in searcher.Get())
{
Console.WriteLine("-----------------------------------");
Console.WriteLine("主机名称:{0} ", mo["DNSHostName"]);
Console.WriteLine("网卡描述:{0}= ", mo["Description"]);
// IPAddresses, probably have more than one value
string[] addresses = (string[])mo["IPAddress"];
foreach (string ipaddress in addresses)
{
Console.WriteLine("IP地址:{0} ", ipaddress);
}
// DefaultIPGateways, probably have more than one value
string[] defaultgateways = (string[])mo["DefaultIPGateway"];
foreach (string defaultipgateway in defaultgateways)
{
Console.WriteLine("默认网关 :{0}", defaultipgateway);
}
Console.WriteLine("-----------------------------------");
}
Console.WriteLine();
Console.WriteLine("检测完毕");
Console.ReadLine();
}
catch (ManagementException e)
{
Console.WriteLine("读取数据发生错误,原因: " + e.Message);
}
}
}
}