252011

例如我们要查看博通网卡的驱动版本,如果该机器上刚好是博通的网卡,最简单的方法就是
ethtool -i eth0

但如果我们所查看的机器用的不是博通的网卡,则可以通过以下方法查看
我们知道博通网卡的驱动文件名叫bnx2.ko
我们查找下bnx2.ko的位置
updatedb
locate bnx2.ko
结果如下
/lib/modules/2.6.32-71.el6.x86_64/kernel/drivers/net/bnx2.ko
查看驱动详细情况
modinfo /lib/modules/2.6.32-71.el6.x86_64/kernel/drivers/net/bnx2.ko
以下信息中,version记录就是我们的网卡驱动版本,是2.0.8-j15

filename: /lib/modules/2.6.32-71.el6.x86_64/kernel/drivers/net/bnx2.ko
firmware: bnx2/bnx2-rv2p-09ax-5.0.0.j10.fw
firmware: bnx2/bnx2-rv2p-09-5.0.0.j10.fw
firmware: bnx2/bnx2-mips-09-5.0.0.j15.fw
firmware: bnx2/bnx2-rv2p-06-5.0.0.j3.fw
firmware: bnx2/bnx2-mips-06-5.0.0.j6.fw
version: 2.0.8-j15
license: GPL
description: Broadcom NetXtreme II BCM5706/5708/5709/5716 Driver
author: Michael Chan <mchan@broadcom.com>
srcversion: 8CDA41B3E0DF70A112FBA80
alias: pci:v000014E4d0000163Csv*sd*bc*sc*i*
alias: pci:v000014E4d0000163Bsv*sd*bc*sc*i*
alias: pci:v000014E4d0000163Asv*sd*bc*sc*i*
alias: pci:v000014E4d00001639sv*sd*bc*sc*i*
alias: pci:v000014E4d000016ACsv*sd*bc*sc*i*
alias: pci:v000014E4d000016AAsv*sd*bc*sc*i*
alias: pci:v000014E4d000016AAsv0000103Csd00003102bc*sc*i*
alias: pci:v000014E4d0000164Csv*sd*bc*sc*i*
alias: pci:v000014E4d0000164Asv*sd*bc*sc*i*
alias: pci:v000014E4d0000164Asv0000103Csd00003106bc*sc*i*
alias: pci:v000014E4d0000164Asv0000103Csd00003101bc*sc*i*
depends:
vermagic: 2.6.32-71.el6.x86_64 SMP mod_unload modversions
parm: disable_msi:Disable Message Signaled Interrupt (MSI) (int)

Posted by admin Tagged with:
252011

Nginx根目录是/opt/www

假如
/opt/www/a/x
/opt/www/a/d/x
/opt/www/b/x
如果配置可以禁止访问所有的x目录?

找到了
location ~ ^(.*)\/\x\/{ deny all;}

Posted by admin Tagged with: ,
052011

在windows下管理linux服务器,经常用的是securecrt,它主要特性有

1、标签式管理
2、标签可以克隆,方便在不同标签完成不同工作
3、服务器列表支持分类
4、缓存key的 passphrase,只需要输入一次,后续使用该key的服务器访问都不需要再输入
5、Forward agent.

大家通过用securecrt登录到2台服务器,2台服务器上都有自己的key,这时,2台服务器上不需要额外的设置即可以相互scp文件,这个过程用的就是 SSH的Forward agent特性,它把认证进行转发。

而我们在linux下管理linux,比较常用的是gnome terminal,这个与securecrt比起来,未免太原始了,敲命令,敲到手抽筋,最近在网上找securecrt的替代工具,竟然在WOW!Ubuntu上找到了PAC Manager 。

http://wowubuntu.com/pac-254.html

它主要特性:
1、标签式管理
2、标签可以克隆,方便在不同标签完成不同工作
3、服务器列表支持分类
4、Forward agent(这个可以通过PAC本身的配置实现,有可以通过修改/etc/ssh/ssh_config的配置来实现).

对比下可以看到,PAC Manager不支持缓存passphrase,这意味着,你每登录一台服务器 ,你都需要输入一次你key的 passphrase,但这个可以通过修改系统配置来达到.

我在ubuntu 10.10上安装了,下面先来做简单介绍

下面说下PAC Manager的图形化操作
添加组:
PAC窗口左上角“GROUP”显示的是组信息,点击添加可以新建分组

左下角是添加服务器列表,点击添加可以添加服务器信息

填好IP,用户名和密码等,如果是用key登录,密码留空即,再指定key的位置

"Edit connection" -> "Connections Properties" -> "Advanced Options":

-o "IdentityFile=/path/to/my_private_key_file"

如果想登录2台服务器,可以相互scp文件,则需要在“CONNECTION PROPERTIES”里把“Forward Agent”选上。

这样就可以进行连接了

每台服务器都需要指定key,这个未免太麻烦了,另外有些服务器需要使用另一个key,而且每次使用key登录服务器,都需要输入key的passphrase,为解决这个问题,我们只要把要用到的private key都交给ssh-agent来进行管理,,每个key只需要输入一次passphrase,后面的登录,就不用输入密码了。

ssh-agent 是个管理 private key 的 passphrase 的工具,启动
ssh-agent
添加需要被ssh-agent管理的key,假设你的private key名是id_rsa
ssh-add id_rsa
此时需要输入一次 private key 的 passphrase ,输入正确后,passphrase 就归 ssh-agent 管理,往后的 ssh 操作,就不需要询问 passphrase 了

ssh-add -l 可以看到现有托管的key

PAC Manager的配置文件保存在/home/user/.pac/pac.yml
如果有大量服务器需要添加,可以写脚本,直接生成配置文件放到/home/user/.pac/pac.yml

Posted by admin Tagged with: ,
062011

工作中可能会有无聊的黑客在你服务器上转悠,黑客智商都不错,所有离开的时候就会删除history记录。怎么办才能记录下用户的历史记录呢?
原理:将history记录到syslog上面,并实时的传送到了远端的日志集中服务器上。

方法:使用bash4.1的新功能:历史命令保存到syslog!然后使用syslog-ng构建集中型日志服务器收集主机日志。

1、下载bash:
#wget http://ftp.gnu.org/gnu/bash/bash-4.1.tar.gz
#tar zxvf bash-4.1.tar.gz –C /tmp/bash-4.1
#cd /tmp/bash-4.1

2、修改源码

(根据个人需要,我只保留了pid,uid,sid等,参数请看目录下的shell.c中):
文件bashhist.c大约708行的位置开始,修改成以下一段:

syslog (SYSLOG_FACILITY|SYSLOG_LEVEL, "HISTORY: PID=%d PPID=%d SID=%d User=%s CMD=%s", getpid(), getppid(), getsid(getpid()), current_user.user_name, line);
else
{
strncpy (trunc, line, SYSLOG_MAXLEN);
trunc[SYSLOG_MAXLEN - 1] = '\0';
syslog (SYSLOG_FACILITY|SYSLOG_LEVEL, "HISTORY (TRUNCATED): PID=%d PPID=%d SID=%d User=%s CMD=%s", getpid(), getppid(), getsid(getpid()), current_user.user_name, trunc);
}
注:
ppid:跟踪sh切换后的用户
Sid: 跟踪 su 切换后的用户
第二段代表log长度超过600后使用的语句
修改config-top.h文件

/*#define SYSLOG_HISTORY*/
修改为
#define SYSLOG_HISTORY
编译安装
# ./configure --prefix=/usr/local/bash_4.1 && make && make install
修改用户配置:
将用户的bash换成现在的bash4.1
# vi /etc/passwd
dongwm:x:501:501::/home/dongwm:/usr/local/bash_4.1/bin/bash
这样日志就会记在/var/log/messages
结果类似这样:

Dec 23 17:40:28 server -bash: HISTORY: PID=4089 PPID=4088 SID=4089 User=dongwm CMD=exit
Dec 23 17:41:47 server -bash: HISTORY: PID=4282 PPID=4278 SID=4282 User=root CMD=exit
Dec 23 17:41:53 server -bash: HISTORY: PID=4321 PPID=4317 SID=4321 User=root CMD=ssh java00
Dec 23 17:44:09 server -bash: HISTORY: PID=2152 PPID=2137 SID=2152 User=root CMD=vi Clean_javalog.sh
Dec 23 17:45:16 server -bash: HISTORY: PID=2152 PPID=2137 SID=2152 User=root CMD=sh Clean_javalog.sh
Dec 23 17:45:30 server -bash: HISTORY: PID=2152 PPID=2137 SID=2152 User=root CMD=cat /dev/shm/cleanJavaLog.log
Dec 23 17:46:08 server -bash: HISTORY: PID=2152 PPID=2137 SID=2152 User=root CMD=vi Clean_javalog.sh
Dec 23 17:48:54 server -bash: HISTORY: PID=2152 PPID=2137 SID=2152 User=root CMD=cat Clean_javalog.sh

......
在整个环境布置了记录功能,就能方便的查出来谁-在何时,用什么账号,做了什么操作...

3、主机syslog配置(添加日志服务器的地址)
# vi /etc/syslog.conf

在最后添加一列:
*.* @server.dongwm.com

4、搭建日志服务器
请参看:http://wenku.baidu.com/view/c3bb49c58bd63186bcebbc7a.html

转载自:http://salogs.com/2010/12/syslog%E8%AE%B0%E5%BD%95history%E5%8E%86%E5%8F%B2%E8%AE%B0%E5%BD%95/

Posted by admin Tagged with:
十二 202010

用keepass管理密码
现在有员工需要将用户名和密码导出来
格式如下
username password

我觉得最难的地方是根据Value取出来的list中,有空值,如果是空值,取其值或者类型时,都会提示
“AttributeError: 'NoneType' object has no attribute 'nodeType'”
可以加if i.firstChild is None:continue进行判断,如果是空值则跳出本次循环
if i.firstChild is None:continue这个是非常pythonic的写法哦

程序

#!/bin/env python
import sys
from xml.dom import minidom
if len(sys.argv[0:]) != 2:
    print "./keepass.py your xml file's path"
    sys.exit()

list=[]
xmldoc = minidom.parse(sys.argv[1])
reflist = xmldoc.getElementsByTagName('Value')
for i in reflist[::-1]:
    if i.firstChild is None:continue
    list.append(i.firstChild.nodeValue)

for j in range(0,len(list),3):
	print list[j]+" "+list[j+2]

输出结果
lisi BiPqIcbHVfUDxaONKjNV
zhangsan h5LGhEYc3OASZf1VcGbD

keepass.xml

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<KeePassFile>
	<Meta>
		<Generator>KeePass</Generator>
		<DatabaseName />
		<DatabaseNameChanged>2010-10-18T06:08:30Z</DatabaseNameChanged>
		<DatabaseDescription />
		<DatabaseDescriptionChanged>2010-10-18T06:08:30Z</DatabaseDescriptionChanged>
		<DefaultUserName />
		<DefaultUserNameChanged>2010-10-18T06:08:30Z</DefaultUserNameChanged>
		<MaintenanceHistoryDays>365</MaintenanceHistoryDays>
		<MasterKeyChanged>2010-11-12T05:41:29Z</MasterKeyChanged>
		<MasterKeyChangeRec>-1</MasterKeyChangeRec>
		<MasterKeyChangeForce>-1</MasterKeyChangeForce>
		<MemoryProtection>
			<ProtectTitle>False</ProtectTitle>
			<ProtectUserName>False</ProtectUserName>
			<ProtectPassword>True</ProtectPassword>
			<ProtectURL>False</ProtectURL>
			<ProtectNotes>False</ProtectNotes>
		</MemoryProtection>
		<RecycleBinEnabled>True</RecycleBinEnabled>
		<RecycleBinUUID>c8kwCXpGOE+MBy1jzCOT/g==</RecycleBinUUID>
		<RecycleBinChanged>2010-10-18T06:08:30Z</RecycleBinChanged>
		<EntryTemplatesGroup>AAAAAAAAAAAAAAAAAAAAAA==</EntryTemplatesGroup>
		<EntryTemplatesGroupChanged>2010-10-18T06:08:30Z</EntryTemplatesGroupChanged>
		<LastSelectedGroup>NHp/A6+c1kqAdPJrncQ5mQ==</LastSelectedGroup>
		<LastTopVisibleGroup>Vgbin7aoeEuGRJXKiJk47g==</LastTopVisibleGroup>
		<CustomData />
	</Meta>
	<Root>
		<Group>
			<UUID>NHp/A6+c1kqAdPJrncQ5mQ==</UUID>
			<Name>keepass</Name>
			<Notes />
			<IconID>48</IconID>
			<Times>
				<LastModificationTime>2010-12-20T13:00:58Z</LastModificationTime>
				<CreationTime>2010-12-20T13:00:52Z</CreationTime>
				<LastAccessTime>2010-12-20T13:01:06Z</LastAccessTime>
				<ExpiryTime>2010-12-18T10:04:30Z</ExpiryTime>
				<Expires>False</Expires>
				<UsageCount>3</UsageCount>
				<LocationChanged>2010-12-20T13:00:52Z</LocationChanged>
			</Times>
			<IsExpanded>True</IsExpanded>
			<DefaultAutoTypeSequence />
			<EnableAutoType>null</EnableAutoType>
			<EnableSearching>null</EnableSearching>
			<LastTopVisibleEntry>NMjEkhZudUiMAnPQOYQa+Q==</LastTopVisibleEntry>
			<Entry>
				<UUID>NMjEkhZudUiMAnPQOYQa+Q==</UUID>
				<IconID>0</IconID>
				<ForegroundColor />
				<BackgroundColor />
				<OverrideURL />
				<Tags />
				<Times>
					<LastModificationTime>2010-12-20T13:01:18Z</LastModificationTime>
					<CreationTime>2010-12-20T13:01:07Z</CreationTime>
					<LastAccessTime>2010-12-20T13:01:18Z</LastAccessTime>
					<ExpiryTime>2010-12-18T10:04:30Z</ExpiryTime>
					<Expires>False</Expires>
					<UsageCount>1</UsageCount>
					<LocationChanged>2010-12-20T13:01:07Z</LocationChanged>
				</Times>
				<String>
					<Key>Notes</Key>
					<Value />
				</String>
				<String>
					<Key>Password</Key>
					<Value>h5LGhEYc3OASZf1VcGbD</Value>
				</String>
				<String>
					<Key>Title</Key>
					<Value>张三</Value>
				</String>
				<String>
					<Key>URL</Key>
					<Value />
				</String>
				<String>
					<Key>UserName</Key>
					<Value>zhangsan</Value>
				</String>
				<AutoType>
					<Enabled>True</Enabled>
					<DataTransferObfuscation>0</DataTransferObfuscation>
				</AutoType>
				<History />
			</Entry>
			<Entry>
				<UUID>b3KWP7kC+UmZnnSA4d0byg==</UUID>
				<IconID>0</IconID>
				<ForegroundColor />
				<BackgroundColor />
				<OverrideURL />
				<Tags />
				<Times>
					<LastModificationTime>2010-12-20T13:01:31Z</LastModificationTime>
					<CreationTime>2010-12-20T13:01:22Z</CreationTime>
					<LastAccessTime>2010-12-20T13:01:31Z</LastAccessTime>
					<ExpiryTime>2010-12-18T10:04:30Z</ExpiryTime>
					<Expires>False</Expires>
					<UsageCount>1</UsageCount>
					<LocationChanged>2010-12-20T13:01:22Z</LocationChanged>
				</Times>
				<String>
					<Key>Notes</Key>
					<Value />
				</String>
				<String>
					<Key>Password</Key>
					<Value>BiPqIcbHVfUDxaONKjNV</Value>
				</String>
				<String>
					<Key>Title</Key>
					<Value>李四</Value>
				</String>
				<String>
					<Key>URL</Key>
					<Value />
				</String>
				<String>
					<Key>UserName</Key>
					<Value>lisi</Value>
				</String>
				<AutoType>
					<Enabled>True</Enabled>
					<DataTransferObfuscation>0</DataTransferObfuscation>
				</AutoType>
				<History />
			</Entry>
		</Group>
		<DeletedObjects>
			<DeletedObject>
				<UUID>9LVoDcHI9UquYgzy1tRXzg==</UUID>
				<DeletionTime>2010-11-12T05:49:57Z</DeletionTime>
			</DeletedObject>
			<DeletedObject>
				<UUID>gimxTDSBBkWdSIFORZUx0w==</UUID>
				<DeletionTime>2010-11-12T05:50:02Z</DeletionTime>
			</DeletedObject>
			<DeletedObject>
				<UUID>7/7Rd5KBT0CyY9O9A2RDpA==</UUID>
				<DeletionTime>2010-11-12T05:50:05Z</DeletionTime>
			</DeletedObject>
			<DeletedObject>
				<UUID>tPT9aQPrNkOM2mmj6kP3CA==</UUID>
				<DeletionTime>2010-11-16T02:58:07Z</DeletionTime>
			</DeletedObject>
			<DeletedObject>
				<UUID>gN/uXsDF206oc1g783tsLQ==</UUID>
				<DeletionTime>2010-11-16T02:58:11Z</DeletionTime>
			</DeletedObject>
			<DeletedObject>
				<UUID>jMYxMK3iakOWgPJGVz9lSg==</UUID>
				<DeletionTime>2010-11-22T08:55:46Z</DeletionTime>
			</DeletedObject>
			<DeletedObject>
				<UUID>j8UaFYCZbE2drG+gNysIwg==</UUID>
				<DeletionTime>2010-11-26T08:30:23Z</DeletionTime>
			</DeletedObject>
			<DeletedObject>
				<UUID>13QkVRyovk+9TNqxneYO5w==</UUID>
				<DeletionTime>2010-11-26T08:33:04Z</DeletionTime>
			</DeletedObject>
			<DeletedObject>
				<UUID>1+DFhfzAYUmL74gsRFzZNw==</UUID>
				<DeletionTime>2010-12-20T12:41:13Z</DeletionTime>
			</DeletedObject>
		</DeletedObjects>
	</Root>
</KeePassFile>
Posted by admin Tagged with: ,