分类 技术 下的文章

Nagios是企业普遍使用的最具影响力的网络信息监视系统之一,它可以动态监视指定的网络状态,并在状态异常时发出警告音或邮件报警通知运维人员。监控的类型和警报定时器是完全可定制的。

Nagios的另一强大功能是它能同时监测主机和服务。例如,它可以同时监测到IP地址和TCP/UDP端口号。为进一步阐述此功能,我们假定有台需要监测的web服务器,Nagios可运用在服务器上基于IP/服务器名运行ping命令的方法检测服务器是否在线,同时当服务器的RTT(往返时延)增加时,Nagios会随时告警。另外,Nagios还能检测TCP的80端口(web服务器)是否可达,比如可能出现服务器在线但Apache/IIS没有响应的情况。

而基于Nagios的第三方监测工具如Centreon, FAN , op5 Monitor 在界面设计,自动化运行和技术支持方面在独立的Nagios引擎基础上提供了相应的补充。

本段教程将展示Linux下Nagios的安装与配置.

Debian或Ubuntu下Nagios的安装

Debian系统用户使用apt-get命令就可安装Nagios:

root@mrtg:~# apt-get install nagios3 

Nagios安装过程中可以设置邮件服务器,安装后也可以进行自定义设置。

提示:为使Nagios可正常发送邮件通知,需正确配置SMTP。

可以看到Nagios支持多种邮件传送方式。最常见的莫过于服务器(Internet Site)直接向接收者发送邮件,另一种常见的形式是用智能主机或中继服务器,将邮件传送至中继邮件服务器,然后它负责将邮件传送给接收者。

进行下一步操作时服务器的域名需要包含进去。

最后,设置一下Nagios管理员‘nagiosadmin’的密码,用户可以之后自行修改密码。

CentOS或RHEL下Nagios的安装

使用yum命令来安装,建立repoforge库之后运行如下yum命令:

[root@mrtg ~]# yum install nagios nagios-plugins

监测需求

本段教程中,我们希望完成以下监测内容:

  1. 每三分钟监测一次所有Linux服务器。
  2. 每三分钟监测一次所有思科路由器。
  3. 所有的邮件告警集中发送至[email protected]
  4. 发出告警前Nagios都将进行3次验证以确保问题确有发生。
  5. 当设备的往返时延超过100ms并且/或包丢失量超过20%将发出邮件告警。

余下的教程将指导您如何在Linux系统中配置Nagios。

Ubuntu下Nagios的配置

明确Nagios配置文件的地址至关重要,以下路径指明了Debian系统下Nagios的配置文件地址。

/etc/nagios-plugins     实现监测功能的专有脚本存放地址
/etc/nagios3    添加主机、服务,定义检测和定时器的配置文件
/usr/lib/nagios/plugins     用于监测的可执行文件

接下来的步骤相互关联,由此开始定义主机,主机组及向主机组添加服务操作。

添加主机模板

我们对同一类型的主机定义了对应的模板,这里使用安装文件作举例说明。

首先,为Linux设备定义主机模板。

root@mrtg:~# cd /etc/nagios3/conf.d
root@mrtg:/etc/nagios3/conf.d/# cp generic-host_nagios2.cfg linux-server.cfg 

如下编辑linux-server.cfg。需要修改部分已经标出。

root@mrtg:/etc/nagios3/conf.d/# vim linux-server.cfg    

-

define host{
name                        linux-server    ; 名称,需修改
notifications_enabled       1   
event_handler_enabled       1   
flap_detection_enabled      1   
failure_prediction_enabled  1   
process_perf_data           1   
retain_status_information   1   
retain_nonstatus_information    1 
check_command               example-host-check  ; 检查所用脚本,需修改
check_interval              3       ; 连续检查的间隔,需修改
max_check_attempts          3       ; 产生邮件告警前的自检次数,需修改
notification_interval       0
notification_period 24x7
notification_options        d,u,r
contact_groups              admins  ; 邮件将要发送至的组,需修改
register0
}

接下来,为Cisco设备定义主机模板。

root@mrtg:/etc/nagios3/conf.d/# cp linux-server.cfg cisco-device.cfg 

如下修改cisco-device.cfg。需要修改部分已经标出。

root@mrtg:/etc/nagios3/conf.d/# vim cisco-device.cfg 

-

define host{
name                        cisco-device    ;名称,需修改
notifications_enabled       1   
event_handler_enabled       1   
flap_detection_enabled      1   
failure_prediction_enabled  1   
process_perf_data           1   
retain_status_information   1   
retain_nonstatus_information    1 
check_command               example-host-check  ; 检查时使用的脚本,需修改
check_interval              3   ; 连续检查间隔,需修改
max_check_attempts          3   ; 产生邮件告警前的自检次数,需修改
notification_interval       0
notification_period         24x7            
notification_options        d,u,r
contact_groups              admins  ; 邮件将要发至的组,需修改
register                    0       
}

添加主机

现在已定义主机模板,就可以添加需要监测的主机。以默认的文件作例子展示如下内容。

root@mrtg:/etc/nagios3/conf.d/# cp localhost_nagios2.cfg example.cfg
root@mrtg:/etc/nagios3/conf.d/# vim example.cfg 

-

# Host 1
define host{
use                     linux-server    ; 使用的主机模板名
host_name               our-server      ; nagios使用的主机名
alias                   our-server
address                 172.17.1.23     ; 主机的IP地址
}

# Host 2
define host{
use                     cisco-device    ; 使用的主机模板名
host_name               our-router      ; nagios使用的主机名
alias                   our-router
address                 172.17.1.1      ; 主机的IP地址
}

主机组定义

当有多个主机时,为方便管理,建议将相似的主机组成一组。

root@mrtg:/etc/nagios3/conf.d/# vim hostgroups_nagios2.cfg 

-

define hostgroup {
hostgroup_name  linux-server    ; 主机组名
alias           Linux Servers
members         our-server      ; 组员列表
}

define hostgroup {
hostgroup_name  cisco-device    ; 主机组名
alias           Cisco Devices
members         our-server      ; comma separated list of members
}

定义服务

首先,定义一个服务example-host-check:当往返时延达到100ms预警值并且有20%包丢失时发出警告,而紧急告警设置为5000ms且包丢失比率为100%,只执行一个IPv4的ping请求检测。

root@mrtg:~# vim /etc/nagios-plugins/config/ping.cfg 

-

define command{
      command_name    example-host-check
      command_line    /usr/lib/nagios/plugins/check_ping -H '$HOSTADDRESS$' -w 100,20% -c 5000,100% -p 1 -4
}

然后,将命令关联至主机组。

root@mrtg:/etc/nagios3/conf.d/# vim services_nagios2.cfg 

-

define service {
hostgroup_name            linux-server
service_description       Linux Servers
check_command             example-host-check
use                       generic-service
notification_interval     0 ; 初始化设置为0
}

define service {
hostgroup_name            cisco-device
service_description       Cisco Devices
check_command             example-host-check
use                       generic-service
notification_interval     0 ; 初始化设置为0
}

联系人定义

进行如下定义将发送邮件需要的地址添加至Nagios。

root@mrtg:/etc/nagios3/conf.d/# vim contacts.cfg

-

define contact{
contact_name                    root
alias                           Root
service_notification_period     24x7
host_notification_period        24x7
service_notification_options    w,u,c,r
host_notification_options       d,r
service_notification_commands   notify-service-by-email
host_notification_commands      notify-host-by-email
email                           root@localhost, [email protected]
}

最后,试运行初始化检测是否有配置错误。如果没有错误,Nagios开始安全运行。

root@mrtg:~# nagios -v /etc/nagios3/nagios.cfg
root@mrtg:~# service nagios3 restart 

CentOS/RHEL上的Nagios配置

Redhat系统中Nagios的配置文件地址如下所示。

/etc/nagios/objects     添加主机、服务,定义监测和定时器的配置文件

/usr/lib/nagios/plugins     实现监测的可执行文件

添加主机模板

为特定类型的主机创建所需的模板,相应修改安装所需的文件。

[root@mrtg objects]# cd /etc/nagios/objects/
[root@mrtg objects]# vim templates.cfg 

-

 define host{
 name                   linux-server    
 use                    generic-host    
 check_period           24x7      
 check_interval         3
 retry_interval         1
 max_check_attempts     3
 check_command          example-host-check
 notification_period    24x7
 notification_interval  0
 notification_options   d,u,r
 contact_groups         admins
 register               0
 }

 define host{
 name                   cisco-router    
 use                    generic-host    
 check_period           24x7      
 check_interval         3
 retry_interval         1
 max_check_attempts     3
 check_command          example-host-check
 notification_period    24x7
 notification_interval  0
 notification_options   d,u,r
 contact_groups         admins
 register               0
 }

添加主机和主机组

这里以默认的配置文件为例,主机和主机组添加至配置文件中。

[root@mrtg objects]# cp localhost.cfg example.cfg
[root@mrtg objects]# vim example.cfg 

-

#Adding Linux server
define host{
use         linux-server
host_name   our-server
alias       our-server
address     172.17.1.23
}

#Adding Cisco Router
define host{
use         cisco-router
host_name   our-router
alias       our-router
address     172.17.1.1
}

# HOST GROUP DEFINITION
define hostgroup{
hostgroup_name  linux-servers
alias           Linux Servers
members         our-server
}

define hostgroup{
hostgroup_name  cisco-router
alias           cisco-router
members         our-router
}

服务定义

定义一个服务example-host-check:当往返时延达到100ms预警值并且有20%包丢失时发出警告,而紧急告警设置为5000ms且包丢失比率为100%,只执行一个IPv4的ping请求检测。

[root@mrtg objects]# vim commands.cfg 

-

define command{
command_name    example-host-check
command_line    $USER1$/check_ping -H $HOSTADDRESS$ -w 100.0,20% -c 5000.0,100% -p 1 -4
}

联系人定义

告警要发送的邮件地址添加至Nagios中。

[root@objects objects]# vim contacts.cfg 

-

define contact{
contact_name    nagiosadmin       
use             generic-contact
alias           Nagios Admin
email           nagios@localhost, [email protected]
}

最后,准备启动Nagios服务,可先试运行检测配置是否出错。

[root@mrtg ~]# nagios –v /etc/nagios/nagios.cfg
[root@mrtg ~]# service nagios restart
[root@mrtg ~]# chkconfig nagios on 

配置后访问Nagios

现在一切就绪,可以开始Nagios之旅了。Ubuntu/Debian用户可以通过打开 http://IP地址/nagios3 网页访问Nagios,CentOS/RHEL用户可以打开 http://IP地址/nagios ,如 http://172.17.1.23/nagios3 来访问Nagios。“nagiosadmin”用户则需要认证来访问页面。

若Nagios没有依原设定运行,首先要做的是建立一个测试运行(dry run)。

Debian或Ubuntu系统:

# nagios3 -v /etc/nagios3/nagios.cfg

CentOS或RHEL系统:

# nagios -v /etc/nagios/nagios.cfg

日志文件也会提供重要线索,若需查看可以转至路径/var/log/nagios/nagios.log。

希望本文有所帮助。


via: http://xmodulo.com/2013/12/install-configure-nagios-linux.html

译者:icybreaker 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

作为一名系统管理员,我们需要弄清楚在一个特定的时间点都有谁活跃在系统上。必须严密监视我们的服务器。但是,我们当然不可能一天24小时都盯着系统。在linux系统中,我们可以使用who命令查看登录者信息。

什么是 who 命令

who命令能够打印 当前都有谁登录到系统中 的相关信息 。who命令只会显示真正登录到系统中的用户。它不会显示那些通过su命令切换用户的登录者。

如何使用who命令

在大多数linux发行版中,who命令都是默认安装上的。想使用该命令,只需在控制台敲命令就行了。不带选项的话,运行该命令产生默认输出。

$ who

如何理解输出:

  • 第一列显示用户名称
  • 第二列显示用户连接方式。Tty意味着用户直接连接到电脑上,而pts意味着远程登录。
  • 第三、四列分别显示日期和时间
  • 第五列显示用户登录IP地址。

使用带参数的who命令

Who命令有一些参数用于调整输出。以下是常用的例子。

显示上一次重新启动的时间和日期

使用 -b 选项

$ who -b

可以看到系统启动是在2013年12月21日,下午3:52。

显示初始化进程的当前运行级别

使用 -r 选项,who命令会打印出初始化进程的当前运行级别

$ who -r

输出显示2013年12月21日,下午3:52系统以 级别2 开始运行。

为每一列添加标题

使用 -H 选项为每一列添加标题

$ who -H

只打印当前运行终端的相关信息

可以使用-m选项。

$ who -m

对当前登录用户数量计数

如果系统同时有多人登录在线,-q 选项协助你完成计数功能。

$ who -q

附加空闲时间和PID信息

默认情况下,who命令不会打印空闲时间和PID信息。如果打算显示这些信息,使用-u选项。不要忘记使用 -H选项让显示的信息更加简单易读。

$ who -u -H

空闲时间 包含了最近最后一次活动以来消逝的时间. 所以,00:13 意思是 用户leni已经13分钟没执行过命令了. (.)符号 是指该终端过去的一分钟有过活动。在那期间,我们称之为 “current” 。PID 是用户shell程序的进程ID号。

显示登录进程

使用-l选项

$ who -l

第一列只显示系统登录守护进程的名字。上面截图中的数字 967, 971等是进程ID。

显示所有信息

使用-a选项会显示所有信息。例如:

$ who -a

总结

你会发现 who 命令跟 w 命令在某些方面有些相像。不要为此感到疑惑,为什么linux要实现这些在功能上相近的命令。你可以使用你觉得最适合你的或者适用于某种场合的命令。请查阅who命令手册了解更多详细信息。


via: http://linoxide.com/linux-command/linux-who-command/

译者:l3b2w1 校对:Caroline

本文由 LCTT 原创翻译,Linux中国 荣誉推出

Netstat 简介

Netstat 是一款命令行工具,可用于列出系统上所有的网络套接字连接情况,包括 tcp, udp 以及 unix 套接字,另外它还能列出处于监听状态(即等待接入请求)的套接字。如果你想确认系统上的 Web 服务有没有起来,你可以查看80端口有没有打开。以上功能使 netstat 成为网管和系统管理员的必备利器。在这篇教程中,我会列出几个例子,教大家如何使用 netstat 去查找网络连接信息和系统开启的端口号。

以下的简单介绍来自 netstat 的 man 手册:

netstat - 打印网络连接、路由表、连接的数据统计、伪装连接以及广播域成员。

1. 列出所有连接

第一个要介绍的,是最简单的命令:列出所有当前的连接。使用 -a 选项即可。

$ netstat -a

Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 enlightened:domain      *:*                     LISTEN     
tcp        0      0 localhost:ipp           *:*                     LISTEN     
tcp        0      0 enlightened.local:54750 li240-5.members.li:http ESTABLISHED
tcp        0      0 enlightened.local:49980 del01s07-in-f14.1:https ESTABLISHED
tcp6       0      0 ip6-localhost:ipp       [::]:*                  LISTEN     
udp        0      0 enlightened:domain      *:*                                
udp        0      0 *:bootpc                *:*                                
udp        0      0 enlightened.local:ntp   *:*                                
udp        0      0 localhost:ntp           *:*                                
udp        0      0 *:ntp                   *:*                                
udp        0      0 *:58570                 *:*                                
udp        0      0 *:mdns                  *:*                                
udp        0      0 *:49459                 *:*                                
udp6       0      0 fe80::216:36ff:fef8:ntp [::]:*                             
udp6       0      0 ip6-localhost:ntp       [::]:*                             
udp6       0      0 [::]:ntp                [::]:*                             
udp6       0      0 [::]:mdns               [::]:*                             
udp6       0      0 [::]:63811              [::]:*                             
udp6       0      0 [::]:54952              [::]:*                             
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags       Type       State         I-Node   Path
unix  2      [ ACC ]     STREAM     LISTENING     12403    @/tmp/dbus-IDgfj3UGXX
unix  2      [ ACC ]     STREAM     LISTENING     40202    @/dbus-vfs-daemon/socket-6nUC6CCx

上述命令列出 tcp, udp 和 unix 协议下所有套接字的所有连接。然而这些信息还不够详细,管理员往往需要查看某个协议或端口的具体连接情况。

2. 只列出 TCP 或 UDP 协议的连接

使用 -t 选项列出 TCP 协议的连接:

$ netstat -at
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 enlightened:domain      *:*                     LISTEN     
tcp        0      0 localhost:ipp           *:*                     LISTEN     
tcp        0      0 enlightened.local:36310 del01s07-in-f24.1:https ESTABLISHED
tcp        0      0 enlightened.local:45038 a96-17-181-10.depl:http ESTABLISHED
tcp        0      0 enlightened.local:37892 ABTS-North-Static-:http ESTABLISHED
.....

使用 -u 选项列出 UDP 协议的连接:

$ netstat -au
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
udp        0      0 *:34660                 *:*                                
udp        0      0 enlightened:domain      *:*                                
udp        0      0 *:bootpc                *:*                                
udp        0      0 enlightened.local:ntp   *:*                                
udp        0      0 localhost:ntp           *:*                                
udp        0      0 *:ntp                   *:*                                
udp6       0      0 fe80::216:36ff:fef8:ntp [::]:*                             
udp6       0      0 ip6-localhost:ntp       [::]:*                             
udp6       0      0 [::]:ntp                [::]:*

上面同时显示了 IPv4 和 IPv6 的连接。

3. 禁用反向域名解析,加快查询速度

默认情况下 netstat 会通过反向域名解析技术查找每个 IP 地址对应的主机名。这会降低查找速度。如果你觉得 IP 地址已经足够,而没有必要知道主机名,就使用 -n 选项禁用域名解析功能。

$ netstat -ant
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 127.0.1.1:53            0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN     
tcp        0      0 192.168.1.2:49058       173.255.230.5:80        ESTABLISHED
tcp        0      0 192.168.1.2:33324       173.194.36.117:443      ESTABLISHED
tcp6       0      0 ::1:631                 :::*                    LISTEN

上述命令列出所有 TCP 协议的连接,没有使用域名解析技术。So easy ? 非常好。

4. 只列出监听中的连接

任何网络服务的后台进程都会打开一个端口,用于监听接入的请求。这些正在监听的套接字也和连接的套接字一样,也能被 netstat 列出来。使用 -l 选项列出正在监听的套接字。

$ netstat -tnl
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 127.0.1.1:53            0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN     
tcp6       0      0 ::1:631                 :::*                    LISTEN

现在我们可以看到处于监听状态的 TCP 端口和连接。如果你查看所有监听端口,去掉 -t 选项。如果你只想查看 UDP 端口,使用 -u 选项,代替 -t 选项。

注意:不要使用 -a 选项,否则 netstat 会列出所有连接,而不仅仅是监听端口。

5. 获取进程名、进程号以及用户 ID

查看端口和连接的信息时,能查看到它们对应的进程名和进程号对系统管理员来说是非常有帮助的。举个栗子,Apache 的 httpd 服务开启80端口,如果你要查看 http 服务是否已经启动,或者 http 服务是由 apache 还是 nginx 启动的,这时候你可以看看进程名。

使用 -p 选项查看进程信息。

~$ sudo netstat -nlpt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 127.0.1.1:53            0.0.0.0:*               LISTEN      1144/dnsmasq    
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      661/cupsd       
tcp6       0      0 ::1:631                 :::*                    LISTEN      661/cupsd

使用 -p 选项时,netstat 必须运行在 root 权限之下,不然它就不能得到运行在 root 权限下的进程名,而很多服务包括 http 和 ftp 都运行在 root 权限之下。

相比进程名和进程号而言,查看进程的拥有者会更有用。使用 -ep 选项可以同时查看进程名和用户名。

$ sudo netstat -ltpe
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       User       Inode       PID/Program name
tcp        0      0 enlightened:domain      *:*                     LISTEN      root       11090       1144/dnsmasq    
tcp        0      0 localhost:ipp           *:*                     LISTEN      root       9755        661/cupsd       
tcp6       0      0 ip6-localhost:ipp       [::]:*                  LISTEN      root       9754        661/cupsd

上面列出 TCP 协议下的监听套接字,同时显示进程信息和一些额外信息。

这些额外的信息包括用户名和进程的索引节点号。这个命令对网管来说很有用。

注意 - 假如你将 -n-e 选项一起使用,User 列的属性就是用户的 ID 号,而不是用户名。

6. 打印统计数据

netstat 可以打印出网络统计数据,包括某个协议下的收发包数量。

下面列出所有网络包的统计情况:

$ netstat -s
Ip:
    32797 total packets received
    0 forwarded
    0 incoming packets discarded
    32795 incoming packets delivered
    29115 requests sent out
    60 outgoing packets dropped
Icmp:
    125 ICMP messages received
    0 input ICMP message failed.
    ICMP input histogram:
        destination unreachable: 125
    125 ICMP messages sent
    0 ICMP messages failed
    ICMP output histogram:
        destination unreachable: 125
... OUTPUT TRUNCATED ...

如果想只打印出 TCP 或 UDP 协议的统计数据,只要加上对应的选项(-t-u)即可,so easy。

7. 显示内核路由信息

使用 -r 选项打印内核路由信息。打印出来的信息与 route 命令输出的信息一样。我们也可以使用 -n 选项禁止域名解析。

$ netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG        0 0          0 eth0
192.168.1.0     0.0.0.0         255.255.255.0   U         0 0          0 eth0

8. 打印网络接口

netstat 也能打印网络接口信息,-i 选项就是为这个功能而生。

$ netstat -i
Kernel Interface table
Iface   MTU Met   RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0       1500 0     31611      0      0 0         27503      0      0      0 BMRU
lo        65536 0      2913      0      0 0          2913      0      0      0 LRU

上面输出的信息比较原始。我们将 -e 选项和 -i 选项搭配使用,可以输出用户友好的信息。

$ netstat -ie
Kernel Interface table
eth0      Link encap:Ethernet  HWaddr 00:16:36:f8:b2:64  
          inet addr:192.168.1.2  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::216:36ff:fef8:b264/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:31682 errors:0 dropped:0 overruns:0 frame:0
          TX packets:27573 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:29637117 (29.6 MB)  TX bytes:4590583 (4.5 MB)
          Interrupt:18 Memory:da000000-da020000 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:2921 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2921 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:305297 (305.2 KB)  TX bytes:305297 (305.2 KB)

上面的输出信息与 ifconfig 输出的信息一样。

9. netstat 持续输出

我们可以使用 netstat 的 -c 选项持续输出信息。

$ netstat -ct

这个命令可持续输出 TCP 协议信息。

10. 显示多播组信息

选项 -g 会输出 IPv4 和 IPv6 的多播组信息。

$ netstat -g
IPv6/IPv4 Group Memberships
Interface       RefCnt Group
--------------- ------ ---------------------
lo              1      all-systems.mcast.net
eth0            1      224.0.0.251
eth0            1      all-systems.mcast.net
lo              1      ip6-allnodes
lo              1      ff01::1
eth0            1      ff02::fb
eth0            1      ff02::1:fff8:b264
eth0            1      ip6-allnodes
eth0            1      ff01::1
wlan0           1      ip6-allnodes
wlan0           1      ff01::1

更多用法

目前为止我们列出了 netstat 的基本用法,现在让我们一起来 geek 吧~

打印 active 状态的连接

active 状态的套接字连接用 "ESTABLISHED" 字段表示,所以我们可以使用 grep 命令获得 active 状态的连接:

$ netstat -atnp | grep ESTA
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp        0      0 192.168.1.2:49156       173.255.230.5:80        ESTABLISHED 1691/chrome     
tcp        0      0 192.168.1.2:33324       173.194.36.117:443      ESTABLISHED 1691/chrome

配合 watch 命令监视 active 状态的连接:

$ watch -d -n0 "netstat -atnp | grep ESTA"

查看服务是否在运行

如果你想看看 http,smtp 或 ntp 服务是否在运行,使用 grep。

$ sudo netstat -aple | grep ntp
udp        0      0 enlightened.local:ntp   *:*                                 root       17430       1789/ntpd       
udp        0      0 localhost:ntp           *:*                                 root       17429       1789/ntpd       
udp        0      0 *:ntp                   *:*                                 root       17422       1789/ntpd       
udp6       0      0 fe80::216:36ff:fef8:ntp [::]:*                              root       17432       1789/ntpd       
udp6       0      0 ip6-localhost:ntp       [::]:*                              root       17431       1789/ntpd       
udp6       0      0 [::]:ntp                [::]:*                              root       17423       1789/ntpd       
unix  2      [ ]         DGRAM                    17418    1789/ntpd

从这里可以看到 ntp 服务正在运行。使用 grep 命令你可以查看 http 或 smtp 或其它任何你想查看的服务。

好了,netstat 的大部分功能都介绍过了,如果你想知道 netstat 更高级的功能,阅读它的手册吧(man netstat)。

欢迎在下面留下你的反馈和建议。


via: http://www.binarytides.com/linux-netstat-command-examples/

译者:bazz2 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

vsftpd非常安全的文件传输协议守护进程) 是Unix/Linux系统中的一个安全快速的FTP服务器。 在这篇指导教程中,让我们看看在openSUSE 13.1中怎样使用vsftpd来配置一个基本的FTP服务器。

安装 vsftpd

作为root用户登录然后输入以下命令。

# zypper in vsftpd

启动 vsftpd 服务然后通过设置使它在每次系统重启时自动启动。

# systemctl enable vsftpd.service
# systemctl start vsftpd.service

配置 vsftpd

为ftp用户新建一个文件夹。

# mkdir /srv/ftp

创建一个名为 ftp-users 的组。

# groupadd ftp-users

让我们来创建一个叫unixmen的示例用户 并设置其主目录为 /srv/ftp 组为 ftp-users

# useradd -g ftp-users -d /srv/ftp/ unixmen

为新用户设置密码。

# passwd unixmen

使ftp主目录 /srv/ftp/ 可以被ftp用户所访问。

# chmod 750 /srv/ftp/
# chown unixmen:ftp-users /srv/ftp/

编辑 vsftpd.conf 文件

# nano /etc/vsftpd.conf

设置如下的更改。

[...]
#Uncomment and  Set YES to enable write.
write_enable=YES
[...]
# Uncomment and Set banner name for your website
ftpd_banner=Welcome to Unixmen FTP service.
[...]
# Uncomment
ls_recurse_enable=YES
[...]
# Uncomment and set YES to allow local users to log in.
local_enable=YES
[...]
# To disable anonymous access, set NO.
anonymous_enable=NO
[...]
# Uncomment to enable ascii download and upload.
ascii_upload_enable=YES
ascii_download_enable=YES
[...]
## Add at the end of this  file ##
use_localtime=YES

保存并退出文件。

测试本地FTP服务器

首先 让我们按如下步骤尝试登录FTP服务器

# ftp localhost
Trying ::1:21 ...
Connected to localhost.
220 (vsFTPd 3.0.2)
Name (localhost:root): unixmen
331 Please specify the password.
Password: 
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>

正如你在上面所输出的那样, 我们能够用unixmen用户登录到ftp服务器。

测试远程FTP服务器

默认 openSUSE 内置的防火墙不允许远程系统登录FTP。所以让我们允许vsftpd服务通过suse的防火墙。然后我们需要打开: Yast -> 安全性与用户 -> 防火墙.

在防火墙界面,进入 允许服务. 在区域选择下拉框中,选择 外部区域 在服务允许下拉框中,选择 vsftpd 服务器 然后点击添加。

单击下一步并关闭Yast控制中心

现在尝试从远程系统连接FTP。

我试着从我的ubuntu桌面系统登录FTP服务器。

sk@sk:~$ ftp 192.168.1.53
Connected to 192.168.1.53.
220 (vsFTPd 3.0.2)
Name (192.168.1.53:sk): unixmen
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>

正如你在上面输出中所看到的,我能够连接到ftp服务器。如果不允许vsftpd服务通过防火墙,你将会得到一个连接超时的报错。

从浏览器连接

打开你的浏览器并导航到ftp://ip-address/。输入ftp用户名和密码。

使用FileZilla连接到FTP服务器

对于新手来说,在命令行模式下工作可能会很烦恼。所以让我们来安装一个叫Filezilla的图形化的FTP客户端。它可以让我们登陆FTP变得更加简单:

几乎所有的发行版在它们的官方软件仓库中都有filezilla客户端。 为了在基于Linux的系统上安装filezilla 需要键入以下的命令:

在基于Ubuntu的系统中:

$ sudo apt-get install filezilla

在Fedora/Redhat系统中:

$ sudo yum install filezilla

在openSUSE中:

# zypper in filezilla

安装完fielzilla后打开它。输入ftp服务器的IP地址、用户名和密码,然后点击快速连接。

为了增加安全性,你可以通过将用户添加到 /etc/vsftpd.chroot\_list文件中来限制特定用户对FTP服务器的访问。

编辑 vsftpd.conf 文件,

nano /etc/vsftpd.conf

设置如下的更改.

[...]
# Uncomment and set YES
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
[...]

创建 文件 /etc/vsftpd.chroot\_list,

nano /etc/vsftpd.chroot_list

添加你希望能够访问FTP服务器的用户。我添加了用户unixmen

unixmen

重启ftp服务.

# systemctl restart vsftpd.service

现在你能够使用chroot\_list文件中列出的用户来连接到FTP服务器。

如果chroot\_list以外的用户想访问FTP服务器,他们将得到如下错误提示。

500 OOPS: could not read chroot() list file:/etc/vsftpd.chroot_list
ftp: Login failed

就是现在这样,你的FTP服务器已经可以使用了,好好享受吧!


via: http://www.unixmen.com/setup-ftp-server-opensuse-13-1/

译者:zsJacky 校对:Caroline

本文由 LCTT 原创翻译,Linux中国 荣誉推出

通常,在控制台的命令提示符下你会发现 用户名已经被显示出来 。但有一些 shell 默认情况下不会显示你的用户名,比如 csh 。所以这个命令最应该用在那些不能回显用户名的 shell 终端上。

怎么样运行 whoami

运行这个命令,你只需要输入 whoami 。下面的例子中我们使用的是 csh shell 终端。

% whoami

Whoami 的参数选项

这个命令仅仅有两个参数选项: –help–version

% whoamin –help

下面这选项会输出和 man whoami 命令一样的信息

% whoami –version

不同的是 –version 会显示你系统上 whoami 命令的版本信息

相似性

whoami 命令和 id -un 有相同的输出。它们都显示出当前用户的用户名。

% id -un

结论

whoami 命令也用于当你使用 su 命令(切换用户)时, 它能让你确认登录的用户名是否正确。whoami 和 who 命令不相同, who 命令会显示所有已经登录的用户名,而 whoami 不是。当你切换用户时,whoami 命令会显示会话所属的当前用户,而 who 命令会显示你切换前的那个源用户。


via: http://linoxide.com/linux-command/linux-whoami-command/

译者:runningwater 校对:Caroline

本文由 LCTT 原创翻译,Linux中国 荣誉推出

以下教程将会为Ubuntu、Linux Mint和Debian GUN/Linux用户讲述,如何在它们基于Debian的Linux操作系统上轻松的解压和重新打包.deb文件。

有时候你在生活中会碰到这样的问题,你想要修改.deb文件的部分内容,然后重新打包。不过只有你真正深入了解计算机才能完成这样的黑客技巧。

下面的例子是刚发生在我身上的真实经历。一位Linux开发者为一个软件构建了一个Debian包(.deb),我也成功地将它安装在我的装载Ubuntu的电脑上。

当我试图从一个Git库中检索一些文件时,它总是卡顿,很显然,该软件并没有正常工作。我知道安装的文件在哪里(/opt目录),所以,我搜查了代码并适当地将部分问题修复。之后,当程序试图检索需要的包时不再卡顿。

所以,长话短说,我要将.deb文件解包,替换上我的补丁文件,然后再重新打包回来。这样我可以其它电脑上安装,或者将修正的包文件发给我的朋友。我要怎么做呢?

在网络上搜索问题的答案,我发现一个名叫ailoo.net的小型博客,它给出类似这样解释:

mkdir -p extract/DEBIAN
dpkg-deb -x package.deb extract/
dpkg-deb -e package.deb extract/DEBIAN [...do something, e.g. edit the control file...]
mkdir build
dpkg-deb -b extract/ build/

这五条命令将奇迹般地完成工作。让我为你解释一下:

  • 第一条命令创建了一个名为“extract”文件夹和一个名为“DEBIAN”的子文件夹;
  • 第二条命令会从你的.deb包提取一些文件到“extract”文件夹;
  • 第三条命令会解压.deb包的内容到“DEBIAN”子文件夹,在那里你就可以修改/补丁你想要的文件;
  • 第四条命令建立一个名为“build”的文件夹;
  • 而第五条命令会将修改后的文件重新构建到一个新的.deb包中,并在 “build” 文件夹中生成。

这就是本次教程!牢牢地记住上面的命令吧,在你执行第三条命令后,可以通过你的默认文件管理器,用一个图形化的文本编辑器可视化地修改文件。如果你在学习本教程时遇到问题,不要犹豫,在下面给我们写下评论。


via: http://news.softpedia.com/news/How-to-Repack-Deb-Files-on-Debian-and-Ubuntu-404930.shtml

译者:Luoxcat 校对:Caroline

本文由 LCTT 原创翻译,Linux中国 荣誉推出