Press "Enter" to skip to content

月与灯依旧 Posts

Linux网络诊断工具:MTR

MTR是Linux平台上一款非常好用的网络诊断工具,集成了traceroute、ping、nslookup的功能,用于诊断网络状态非常有用。下面请看简单介绍。

一,安装

$ yum install mtr             #适用于centos
$ sudo apt-get install mtr    #适用于debian/ubuntu

二,用法简介

$ mtr IP或域名

MTR用法简介
第一列(Host):IP地址和域名,按n键可以切换IP和域名
第二列(Loss%):丢包率
第三列(Snt):设置每秒发送数据包的数量,默认值是10 可以通过参数-c来指定
第四列(Last):最近一次的PING值
第五、六、七列(Avg、Best、Wrst):分别是PING的平均、最好、最差值
第八列(StDev):标准偏差

Leave a Comment

Fedora21系统中为ibus添加五笔输入法

Fedora21系统中为ibus添加五笔输入法,其实过程很简单。

1,安装五笔输入法

$ sudo yum list | grep wubi               #查看有哪些五笔输入法
ibus-table-chinese-wubi-haifeng.noarch  1.4.6-2.fc19                     fedora 
ibus-table-chinese-wubi-jidian.noarch   1.4.6-2.fc19                     fedora 

$ sudo yum install ibus-table-chinese-wubi-haifeng   #安装海峰五笔

貌似海峰五笔比极点五笔好用一些。极点五笔把tfrc打出了“造反”,而海峰五笔可以同时打出为“造反”和“选择”。
(补充:发现极点五笔确实很差,ykkl无法打出“识别”)
另外,安装完需要重启一下,然后第二步操作的时候,系统里才能识别出来海峰五笔。

2,设置五笔输入法

Fedora21系统中为ibus添加五笔输入法

Fedora21系统中为ibus添加五笔输入法

Fedora21系统中为ibus添加五笔输入法

Fedora21系统中为ibus添加五笔输入法

对于中国用户来说,应该是非常习惯使用Ctrl+Shift来切换输入法吧。在gnome-tweak-tool里稍微设置一下就好了,见下图:
Fedora21系统中为配置输入法快捷键

=================================================

2015.12.11补充
Fedora23里的新版已经无法通过gnome-tweak-tool来设置Ctrl+Shift快捷键了,可以在Gnome3的“终端”里(注意不能用SSH远程登陆执行),运行如下命令

gsettings set org.gnome.desktop.wm.keybindings switch-input-source "['<Ctrl>Shift_L', '<Ctrl>Shift_R']"
37 Comments

OpenVPN配置静态密钥(static-key)验证

由于OpenVPN的证书方式采用了TLS握手机制,而TLS已经受到严重干扰(不论是TCP还是UDP),已不能在在国内使用。但OpenVPN还可以采用静态密钥(static-key)的方式,相对于证书方式,static-key不需要TLS握手,不易被干扰,缺点也显而易见,那就是只能配置一对一的网络,如果要配置一对多的网络,需要启动多个OpenVPN进程。

一,服务端设置
生成static-key,并在配置文件中启用之

$ openvpn --genkey --secret static.key

然后把static.key和主配置文件放入同一目录

$ vim /etc/openvpn/server.conf  #配置主配置文件如下
dev tun
port 8899
proto tcp-server
ifconfig 10.152.10.1 10.152.10.2
secret static.key
 
keepalive 10 60
comp-lzo
persist-key
persist-tun
status /var/log/openvpn/openvpn-status.log
log /var/log/openvpn/openvpn.log
verb 4
push "redirect-gateway def1 bypass-dhcp" 

由于OpenVPN默认使用UDP的方式传输,如果想改用TCP方式,需要加上“proto tcp-server”一行(这里未启用,已经使用分号注释掉了);
这里我去掉了push dns的配置项,因为客户端总是无法接收到PUSH过来的dns option,原因未知,所以干脆把DNS写进客户端的配置文件算了

Leave a Comment

CentOS6系统openssl生成证书和自签证书

CentOS6系统openssl生成证书和自签证书的过程,记录一下,本文基于CentOS 6 64bit。

$ yum install openssl openssl-devel

1,生成服务器端的私钥(key文件)

$ openssl genrsa -des3 -out server.key 1024

此时会提示输入密码(PEM pass phrase,必须输入),此密码用于加密key文件(参数des3便是指加密算法)。
以后每当需读取此文件(通过openssl提供的命令或API)都需输入密码(PEM pass phrase)。例如把key文件引入Nginx等第三方软件配置https,在启动Nginx的时候同样会要求输入密码。
如果觉得不方便,也可以去除这个密码,但一定要采取其他的保护措施

去除key文件的密码:openssl rsa -in server.key -out server.key

2,生成Certificate Signing Request(CSR)

$ openssl req -new -key server.key -out server.csr -config /etc/pki/tls/openssl.cnf

生成的csr文件交给CA签名后形成服务端自己的证书。屏幕上将有提示,依照其指示一步一步输入要求的个人信息即可

Leave a Comment

Linux执行usermod时提示user xxx is currently logged in问题

近日遇到一怪事,执行usermod更改用户家目录时,被提示usermod: user xxx is currently logged in,可是用户根本没有登陆到系统里啊。查了下,网上普遍的解决方法是备份以后清空/var/run/utmp文件,再重启以后就好了。可说的容易,服务器哪是想重启就重启的?

$ usermod -d /some/opther/path userfoo
usermod: user userfoo is currently logged in

$ who
myuser  pts/0        2013-06-17 11:29 (1.2.3.4)

$ ps aux | grep userfoo
root  16724  0.0  0.0 103236   884 pts/0    S+   11:36   0:00 grep userfoo

根本原因:chmod是根据lsof判断用户是否已经logged in的。通过lsof找出“正在登陆”的用户,kill掉相关进程就可以了。

$ lsof | grep userfoo
dbus-daem 29904       userfoo  cwd   unknown    /proc/29904/cwd (readlink: Permission denied)
dbus-daem 29904       userfoo  rtd   unknown    /proc/29904/root (readlink: Permission denied)
dbus-daem 29904       userfoo  txt   unknown    /proc/29904/exe (readlink: Permission denied)
dbus-daem 29904       userfoo NOFD              /proc/29904/fd (opendir: Permission denied)
dbus-daem 31889       userfoo  cwd   unknown    /proc/31889/cwd (readlink: Permission denied)
dbus-daem 31889       userfoo  rtd   unknown    /proc/31889/root (readlink: Permission denied)
dbus-daem 31889       userfoo  txt   unknown    /proc/31889/exe (readlink: Permission denied)
dbus-daem 31889       userfoo NOFD              /proc/31
Leave a Comment

Ubuntu系统下查看硬盘信息

Ubuntu系统下查看硬盘信息的方法,可以查看到硬盘的型号、序列号、接口类型,转速,缓存等,这里记录一下。

方法一:直接通过内核查看

$ cat /sys/block/sda/device/model
ST31000524AS

$ cat /sys/block/sda/device/vendor 
ATA

方法二:用过hdparm命令查看

$ sudo hdparm -I /dev/sda

/dev/sda:

ATA device, with non-removable media
	Model Number:       ST31000524AS                            
	Serial Number:      9VPF38YC
	Firmware Revision:  JC45    
	Transport:          Serial, SATA Rev 3.0
Standards:
	这里省略大量信息
Configuration:
	Logical		max	current
	cylinders	16383	16383
	heads		16	16
	sectors/track	63	63
	--
	CHS current addressable sectors:   16514064
	LBA    user addressable sectors:  268435455
	LBA48  user addressable sectors: 1949396401
	Logical/Physical Sector size:           512 bytes
	device size with M = 1024*1024:      951853 MBytes
	device size with M = 1000*1000:      998090 MBytes (998 GB)
	cache/buffer size  = unknown
	Nominal Media Rotation Rate: 7200
Capabilities:
	LBA, IORDY(can be disabled)
	这里省略大量信息
Commands/features:
	Enabled	Supported:
	   *	SMART feature set
	    	Security Mode feature set
	   *	这里省略大量信息
	   *	SCT Data Tables (AC5)
Security: 
	Master password revision code = 65534
		supported
	not	enabled
	not	locked
		frozen
	not	expired: security count
		supported: enhanced erase
	164min for SECURITY ERASE UNIT. 164min for ENHANCED SECURITY ERASE UNIT.
Logical Unit WWN Device Identifier: 5000c5003fc5c146
	NAA		: 5
	IEEE OUI	: 000c50
	Unique ID	: 03fc5c146
Checksum: correct
2 Comments

Ubuntu的包管理方式简介(apt-get、dpkg、aptitude)

因为工作的关系,刚从CentOS换到Ubuntu,需要对Ubuntu系统有一些了解。因此便有了本文。

apt-cache search package    #搜索包(相当于yum list | grep pkg)
apt-cache show package      #显示包的相关信息,如说明、大小、版本等
apt-cache showpg package    #显示包的相关信息,如Reverse Depends(反向依赖)、依赖等
apt-get install package       #安装包
apt-get reinstall package     #重新安装包
apt-get -f install package    #强制安装
apt-get remove package        #删除包(只是删掉数据和可执行文件,不删除配置文件)
apt-get remove --purge package       #删除包,包括删除配置文件等
apt-get autoremove --purge package   #删除包及其依赖的软件包+配置文件等
apt-get update          #更新源
apt-get upgrade         #更新已安装的包
apt-get dist-upgrade    #升级系统
apt-get dselect-upgrade        #使用 dselect 升级
apt-cache depends package      #了解使用依赖
apt-cache rdepends package     #查看该包被哪些包依赖
apt-get build-dep package   #安装相关的编译环境
apt-get source package      #下载该包的源代码
apt-get clean && apt-get autoclean  #清理下载文件的存档 && 只清理过时的包
apt-get check             #检查是否有损坏的依赖
dpkg -S filename          #查找filename属于哪个软件包
apt-file search filename  #查找filename属于哪个软件包
apt-file list packagename #列出软件包的内容
apt-file update           #更新apt-file的数据库
dpkg -l      #列出当前系统中所有的包.可以和参数less一起使用在分屏查看(类似于rpm -qa)
dpkg -l |grep -i "pkg"   #查看系统中与"pkg"相关联的包(类似于rpm -qa | grep pkg)
dpkg -s pkg  #查询一个已安装的包的详细信息(类似于rpm -qi)
dpkg -L pkg  #查询一个已安装的软件包释放了哪些文件(类似于rpm -ql)
dpkg -S file     #查询系统中某个文件属于哪个软件包(类似于rpm -qf)
dpkg -c pkg.deb  #查询一个未安装的deb包将会释放哪些文件(类似于rpm -qpl)
dpkg -I pkg.deb  #查看一个未安装的deb包的详细信息(类似于rpm -qpi)
dpkg -i pkg.deb  #手动安装软件包(不能解决软依赖性问题,可以用apt-get -f install解决)
dpkg -r pkg      #卸载软件包(不是完全的卸载,它的配置文件还存在)
dpkg -P pkg      #全部卸载(不能解决依赖性的问题)
dpkg-reconfigure pkg     #重新配置
dpkg -x pkg.deb dir      #将一个deb包解开至dir目录
dpkg --pending --remove  #移除多余的软件
Leave a Comment