Grep命令中正则表达式(regular Expressions,RE)的用法

当你在使用grep命令的时候肯定会用到正则表达式,那么怎么在grep命令中使用正则表达式呢?

正则表达式元字符

grep命令支持很多正则表达式的元字符,以使用户能够更精准的定义要查找的模式。例如,可以通过制定的选项来关闭大小写敏感,要求显示行号等。

元字符 功能 示例 匹配对象
^ 行首定位符 ‘^user’ 匹配所有以user开头的行
$ 行尾定位符 ’user$’ 匹配所以以user结尾的行
匹配一个字符 ‘u.r’ 匹配包含一个u,后跟一个字符,再跟一个r的行
* 匹配两个或多个前导字符 ’u*ser’ 匹配包含零个或多个u后,跟ser模式的行
[] 匹配一组字符中的人一个 ‘[uU]ser’ 匹配包含user或者User的行
[^] 匹配不在指定字符组里的字符 ’[^A-S]ser‘ 匹配一个不在A到S之间的字符,并且该字符后紧跟着ser的行
\< 词首定位符 ’\<user‘ 匹配包含以user开头的词的行
\> 词尾定位符 ’user\>‘ 匹配包含以user结尾的词的行
\<..\> 标记匹配到的字符 ’\<user\>’ 匹配包含<user>的行
{M}{M,}{M,N} 匹配重复出现的次数M次匹配出现的次数至少M次

匹配出现的次数至少M次,但不超过N次

‘u\{4\}u\{5\}

u\{5,8\}’

匹配连续出现4个u的行匹配连续出现最少5个u的行

匹配连续出现最少5个,最多8个u的行

 

grep 正则表达式示例:

在/etc/passwd 里查找包含“user1“字符串的行

[root@devops ~]# grep user1 /etc/passwd
user1:x:502:503::/home/user1:/bin/bash

如果想忽略大小写的区做搜索可以使用-i选项

#grep  user1 /etc/passwd

你可以使用”.”元字符为一个单个的字符做匹配,例如我们可以使用下面的命令去匹配一个以”u”开头,以“r”结尾,中间是任意一个字符的行

[root@devops ~]# grep '\<u.r\>' /etc/passwd
game:x:12:100:games:/usr/games:/sbin/nologin

如何在grep正则表达式中准确的匹配所有包含两个字符的行?

[root@devops ~]# grep '^..$' /

Linux下查看yum命令历史记录的方法

linux_inner如何来查看yum在运行后的历史信息呢?比如安装,删除,更新包的过程记录信息。如何使用yum命令重新安装包呢?如何使用yum命令撤销上次的安装呢?

Yum 命令在Centos/Redhat 6.x+之后提供了一个新的选项:history. 可以通过该选项查看到yum命令的处理过程,回滚,撤销,重新执行历史操作。
Yum命令在3.2以上的版本或者是Centos/RHEL 6.x 提供了history选项,可以通过下面的命令来查看yum的版本号:

#yum info yum

yum history 命令形式如下:

yum history
yum history command
yum history [选项] #选项包括: info|list|packages-list|summary|addon-info|redo|undo|rollback|new

下面举几个例子:
1.显示yum 历史

[root@devops ~]# yum history list
Loaded plugins: fastestmirror
ID | Login user | Date and time | Action(s) | Altered
-------------------------------------------------------------------------------
2 | root <root> | 2013-12-12 05:34 | I, U | 15
1 | System <unset> | 2013-12-12 05:03 | Install | 332
history list

2.查看所有的处理过程

# yum history list all

查看其中的某个或某个范围的处理过程

#yum history list 1
#yum history list 1..5
[root@devops ~]# yum history list 2
Loaded plugins: fastestmirror
ID | Login user | Date and time | Action(s) | Altered
-------------------------------------------------------------------------------
2 | root <root> | 2013-12-12 05:34 | I, U | 15
history list

3.查看某个包的yum处理过程,比如firefox

[root@devops ~]# yum history list firefox
Loaded plugins: fastestmirror
ID | Login user | Date and time | Action(s) | Altered
-------------------------------------------------------------------------------
2 | root <root> | 2013-12-12 05:34 | I, U | 15
history list

还可以通过yum history package-list 查看firefox包的完整包列表信息

root@devops ~]# yum history package-list firefox
Loaded plugins: fastestmirror
ID | Action(s) | Package
-------------------------------------------------------------------------------
2 | Install | firefox-17.0.10-1.el6.centos.x86_64
history package-list

基于上面的包列表中的ID,可以查看那次安装的firefox包的完整处理信息:

[root@devops ~]# yum history info 2
Loaded plugins: fastestmirror
Transaction ID : 2
Begin time : Thu Dec 12 05:34:00 2013
Begin rpmdb : 332:0f20e18208bd2e665c18360a74c87da7278db75a
End time : 05:34:19 2013 (19 seconds)
End rpmdb : 340:a77df63b3e7e6db32a8700a8eb627c71f67d8eae
User : root <root>
Return-Code : Success
Command Line : install firefox
Transaction performed with:
Installed rpm-4.8.0-27.el6.x86_64 @anaconda-CentOS-201207061011.x86_64/6.3
Installed yum-3.2.29-30.el6.centos.noarch @anaconda-CentOS-201207061011.x86_64/6.3
Installed yum-plugin-fastestmirror-1.1.30-14.el6.noarch @anaconda-CentOS-201207061011.x86_64/6.3
Packages Altered:
Dep-Install centos-indexhtml-6-1.el6.centos.noarch @base
Install firefox-17.0.10-1.el6.centos.x86_64 @base
Dep-Install hunspell-1.2.8-16.el6.x86_64 @base
Dep-Install liberation-fonts-common-1.05.1.20090721-5.el6.noarch @base
Dep-Install liberation-sans-fonts-1.05.1.20090721-5.el6.noarch @base
...

4.撤销某一次的yum处理过程
我们先用yum把firefox包卸载,然后再撤销卸载,回复正常使用

[root@devops ~]# yum erase firefox
Loaded plugins: fastestmirror
Setting up Remove Process
Resolving Dependencies
--> Running transaction check
...

现在我们来撤销上面的卸载处理,使用下面的命令:
首先查看下卸载操作的ID号

[root@devops ~]# yum history package-list firefox
Loaded plugins: fastestmirror
ID | Action(s) | Package
-------------------------------------------------------------------------------
3 | Erase | firefox-17.0.10-1.el6.centos.x86_64
2 | Install | firefox-17.0.10-1.el6.centos.x86_64
history package-list

从上面的输出我们可以看到卸载操作的ID是3,下面执行撤销操作

# yum history undo 3

5.重新执行某次yum处理过程
输入下面的命令:

#yum history redo id

RHEL Centos 6.x 下KVM虚拟化安装与配置详细步骤

在centos 或RHEL6下如何基于内核虚拟化技术来搭建和管理一个虚拟化环境呢?下面我们会详细的介绍:

首先,KVM是RHEL和Centos linux 系统的一部分。可以很容易的使用下面的命令来安装。需要注意的是安装的包名已经在RHEL/Centos6.x里做了更改。

安装必须的KVM RPMs包,输入下面的命令:

1
2
yum groupinstall "Virtualisation Tools" "Virtualization Platform"
yum install python-virtinst

或者

1
yum install kvm qemu-kvm python-virtinst libvirt libvirt-python virt-manager libguestfs-tools

命令输出:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Loaded plugins: product-id, protectbase, rhnplugin
This system is receiving updates from RHN Classic or RHN Satellite.
0 packages excluded due to repository protections
Setting up Install Process
Package libvirt-0.10.2-18.el6_4.15.x86_64 already installed and latest version
Resolving Dependencies
--&gt; Running transaction check
---&gt; Package libguestfs-tools.x86_64 1:1.16.34-2.el6 will be installed
--&gt; Processing Dependency: libguestfs-tools-c = 1:1.16.34-2.el6 for package: 1:libguestfs-tools-1.16.34-2.el6.x86_64
....
..
..
spice-glib.x86_64 0:0.14-7.el6_4.3
spice-gtk.x86_64 0:0.14-7.el6_4.3
spice-gtk-python.x86_64 0:0.14-7.el6_4.3
spice-server.x86_64 0:0.12.0-12.el6_4.5
vgabios.noarch 0:0.6b-3.7.el6
vte.x86_64 0:0.25.1-8.el6_4
Complete!

启动libvirtd 服务进程

libvirtd 程序是libvirt虚拟化管理系统里的服务器段的进程,输入下面的命令来启动该服务:

1
2
chkconfig libvirtd on
service libvirtd start

命令输出:
Starting libvirtd daemon: [ OK ]

你可以通过下面的命令来验证libvirtd服务是否启动

1
2
service libvirtd status
libvirtd (pid 2332) is running...

实例:如何在linux系统里创建两个虚拟机器

安装和配置一个网桥
所有的虚机只能访问外面的host主机以及其他的在同一主机上的虚机。如果虚机想访问外面的局域网或者互联网,那么久需要创建一个网桥。输入下面的命令来
安装网桥相关的包:

1
yum install bridge-utils

设置一个默认网关
编辑/etc/sysconfig/network文件

1
2
3
4
#cat /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=osetc.com
GATEWAYDEV=br1

配置桥接
更新ifcfg-eth0的配置文件如下:

1
2
3
4
5
#cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
ONBOOT=yes
HWADDR=08:A0:4C:XX:XX:XX
BRIDGE=br0

创建网桥br0的配置文件ifcfg-br0,设置br0的ip地址,子网掩码

1
2
3
4
5
6
7
8
#cat /etc/sysconfig/network-scripts/ifcfg-br0
DEVICE=br0
TYPE=Bridge
BOOTPROTO=static
ONBOOT=yes
IPADDR=172.16.0.1 (和物理主机的ip在同一个网段)
NETMASK=255.255.255.192
DELAY=0

重启网络服务

1
service network restart

开始创建虚机

将linux系统盘放入光驱,输入下面的命令:

1
2
3
4
5
6
7
8
9
# virt-install \
--name Kvm1 \
--description "osetc.com RHEL 6.4 64 bit KVM1" \
--ram=2048 \
--vcpus=8 \
--disk path=/var/lib/libvirt/images/rhel-Kvm1-osetc.com.img,size=10 \
--cdrom /var/lib/libvirt/boot/RHEL.6.4.Server-DVD1.iso \
--network bridge:br0 \
--graphics vnc

Linux/unix:通过watch命令实时动态查看命令的运行结果

watch是一个非常强大的而且我会经常使用的命令,运行watch <命令>默认将会每2秒钟重复执行一次该命令。这 样的话我们就可以很好的去查看当前运行的命令的进度,实时查看内存或者磁盘的使用情况,可以监控/proc下的 各种不同的进程。

参数:

-n 指定时间间隔
-d 高亮显示变化的区域

下面是几个简单的例子:

内存使用情况:
$watch free

linux_watch_cmd

Raid 构建过程:

1
2
3
4
5
6
7
Every 2.0s: cat /proc/mdstat

Personalities : [raid1]
md0 : active raid1 sda[2] sdb[1]
976758841 blocks super 1.2 [2/1] [_U]
[==================&gt;..] recovery = 92.4% (902988416/976758841) finish=102.3min
speed=12012K/sec

监控磁盘使用情况:
$watch du -h

1
2
3
4
5
6
7
Every 2.0s: df -h 2013

Filesystem Size Used Avail Use% Mounted on
/dev/xvda 95G 29G 65G 31% /
none 202M 208K 202M 1% /run
none 5.0M 0 5.0M 0% /run/lock
none 1007M 0 1007M 0% /run/shm

Linux ls 命令: 按文件大小显示各个文件

在linux或类unix系统下,如何使用ls命令并按文件的大小对特定目录下的文件排序呢?

首先我们来说一下“ls”命令,该命令是linux和类unix系统下的用来显示目录内容的。如果命令后面不跟任何的参数,当前目录的内容会直接显示在屏幕上。默认情况下,如果即没有的-cftuvSUX,也没有–sort参数传给ls命令,输出结果将会按字母的排列顺序来显示。

默认输出(按字母顺序排序)

输入下面的命令:

1
2
3
$ ls
$ ls *.log
$ ls *.cfg

命令输出:

linux_ls1

按大小排序显示

需要传递-s 或–sort=size参数:

1
2
3
4
$ls -s
$ls --sort=size
$ls --sort=size *.log
$ls -s *.cfg

命令输出:

linux_ls2

你将会看到最大的文件将会显示在最上面。 下面的命令将会以相反的顺序显示文件:

1
2
3
$ls -l -S | sort -k 5 -n

$ls -lSr

命令输出:

linux_ls3

三种配置Linux iptables 防火墙的方法

最近在centos系统上搭建了一个Apache web服务器,就考虑如何通过防火墙配置访问限制,如何来做呢?在RHEL或Centos系统里,如何搭建防火墙呢?

默认情况下,centos系统里的iptables配置是不允许访问被Apache服务器使用的HTTP(端口号80)和HTTPS(端口443)端口。所以你需要通过下面的几种方法去更改配置:

1.编辑/etc/sysconfig/iptables配置文件,设置允许或禁止访问Apache web服务器。另外还需要编辑“/etc/sysconfig/ip6tables”配置文件,设置允许或禁止访问web服务。

2.通过”system-config-firewall-tui”命令 或 “system-config-firewall”(要在GUI界面上运行)。这是个基于图形界面来设置基本的防火墙规则的命令。这个工具将会一直重写“/etc/sysconfig/iptables”文件。

3.使用”/sbin/iptables” 命令:通过该命令可以直接的去更改/追加/添加防火墙规则。访问控制规则通过命令“/sbin/service iptables save”保存”/etc/sysconfig/iptables”文件里。

方法一:配置/etc/sysconfig/iptables 文件(推荐高级用户使用)

编辑IPv4的/etc/sysconfig/iptables配置文件:

1
#vi /etc/sysconfig/iptables

添加下面的行,对于INPUT规则务必要添加到”LOG“,”FORWARD“和”DROP”行的前面:
##允许任何人访问80和443端口

1
2
-A INPUT -m state --state NEW -p tcp --dport 80 -j ACCET
-A INPUT -m state --state NEW -p tcp --dport 443 -j ACCET

保存并退出编辑的文件,重新启动IPv4防火墙服务:

1
#service iptables start

编辑IPv6的防火墙配置文件/etc/sysconfig/ip6tables:

1
#vi /etc/sysconfig/ip6tables

添加下面的行,对于INPUT规则务必要添加到”LOG“,”FORWARD“和”DROP”行的前面:

1
2
3
##允许任何人访问80和443端口
-A INPUT -m state --state NEW -p tcp --dport 80 -j ACCET
-A INPUT -m state --state NEW -p tcp --dport 443 -j ACCET

保存并退出编辑的文件,重新启动IPv6防火墙服务:

1
#service ip6tables restart

方法二:防火墙配置GUI工具(初学者使用)

system-config-firewall命令是一个设置基本的防火墙规则的图形化用户接口。系统必须安装了KDE或Gnome GUI程序。打开终端输入下面的命令:

1
#system-config-firewall

命令输出界面如下:

选择启用WWW,SSH,HTTPS服务,然后点击“应用”按钮这个工具将会重写/etc/sysconfig/iptables 配置:

方法三:/sbin/iptables 命令行工具(高级用户使用)

在root用户输入下面的iptables命令打开80和443端口

1
2
3
4
5
6
7
8
9
10
11
##打开80和443端口
/sbin/iptables -A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT
/sbin/iptables -A INPUT -m state --state NEW -p tcp --dport 443 -j ACCEPT

##保存最新添加的防火墙规则
/sbin/service iptables save

##验证新的防火墙设置
/sbin/iptables -L -n -v
/sbin/iptables -L INPUT -n -v | grep :80
/sbin/iptables -L INPUT -n -v | grep :443

防火墙示例:
1.只允许特定网段(172.16.1.0/24)访问80和443端口

1
2
3
4
5
6
7
8
9
10
11
12
##开放80和443端口
/sbin/iptables -A INPUT -s 172.16.1.0/24 -m state --state NEW -p tcp --dport 80 -j ACCEPT
/sbin/iptables -A INPUT -s 172.16.1.0/24 -m state --state NEW -p tcp --dport 443 -j ACCEPT

##保存最新添加的防火墙规则
/sbin/service iptables save

##验证新的防火墙设置
/sbin/iptables -L -n -v
/sbin/iptables -L INPUT -n -v
/sbin/iptables -L INPUT -n -v | grep :80
/sbin/iptables -L INPUT -n -v | grep :443

2.通过iptables设置禁止10.0.0.1访问80端口

1
2
3
4
5
##禁止访问80端口
iptables -A INPUT -s 10.0.0.1 -p tcp --dport 80 -j DROP

##保存最新添加的防火墙规则
/sbin/service iptables save

如何基于ssh的会话方式更改远程主机的密码?

何为SSH?

传统的网络服务程序,如:ftp、pop和telnet在本质上都是不安全的,因为它们在网络上用明文传送口令和数据,别有用心的人非常容易就可以截获这些口令和数据。而且,这些服务程序的安全验证方式也是有其弱点的,就是很容易受到“中间人”(man-in-the-middle)这种方式的攻击。所谓 “中间人”的攻击方式,就是“中间人”冒充真正的服务器接收你的传给服务器的数据,然后再冒充你把数据传给真正的服务器。服务器和你之间的数据传送被“中间人”一转手做了手脚之后,就会出现很严重的问题。
SSH的英文全称是Secure SHell。通过使用SSH,你可以把所有传输的数据进行加密,这样“中间人”这种攻击方式就不可能实现了,而且也能够防止DNS和IP欺骗。还有一个额外的好处就是传输的数据是经过压缩的,所以可以加快传输的速度。SSH有很多功能,它既可以代替telnet,又可以为ftp、pop、甚至ppp提供一个安全的“通道”。

参数:

1
2
3
4
ssh -t 用户名@主机名 passwd
ssh -t 用户名@ip地址 passwd
ssh -t 用户名@172.16.1.2 passwd
ssh -t 用户名@172.168.1.2 /bin/passwd

-t:该参数通过指定一个伪终端使SecureShell客户端以交互模式工作,即使在给定命令的情况下也是如此。它被用于执行在远地主机上的基于屏幕的程序。

linux:GPG更改密钥的命令

我们平时最常用的安全的远程控制协议是ssh,其开源实现为openssh.

OpenSSH 是 SSH (Secure SHell) 协议的免费开源实现。SSH协议族可以用来进行远程控制, 或在计算机之间传送文件。而实现此功能的传统方式,如telnet(终端仿真协议)、 rcp ftp、 rlogin、rsh都是极为不安全的,并且会使用明文传送密码。OpenSSH提供了服务端后台程序和客户端工具,用来加密远程控件和文件传输过程的中的数据,并由此来代替原来的类似服务。OpenSSH是使用SSH透过计算机网络加密通讯的实现。它是取代由SSH Communications Security所提供的商用版本的开放源代码方案。目前OpenSSH是OpenBSD的子计划。

对于openssh来说我们可以使用ssh-keygen来更改其密钥,但对于linux下的GPG加密密钥如何更改呢?如何通过gpg来更改密钥呢?

gpg是GNU里OpenPGP的一部分。它是一个提供数字加密和签名服务使用的OpenPGP标准。你可以使用GPG命令的完整的密钥管理包括更改密钥密码。

更改密钥的密码

参数:

1
2
3
gpg --edit-key id
gpg > passwd
gpg >save

当输入passwd命令后,会要求输入旧的和新的密钥

示例:

首先,使用下面的命令显示key

1
gpg --list-keys

示例输出:

1
2
3
4
5
/root/.gnupg/pubring.gpg
------------------------
pub   4096R/9AABBCD8 2013-10-04
uid                  Home Nas Server (Home Nas Server Backup)
sub   4096R/149D60C7 2013-10-04

再输入下面的命令:

1
gpg --edit-key 9AABBCD8

命令输出:

1
2
3
4
5
6
7
8
9
10
11
gpg (GnuPG) 1.4.12; Copyright (C) 2012 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Secret key is available.

pub  4096R/9AABBCD8  created: 2013-10-04  expires: never       usage: SC
trust: ultimate      validity: ultimate
sub  4096R/149D60C7  created: 2013-10-04  expires: never       usage: E
[ultimate] (1). Home Nas Server (Home Nas Server Backup)
gpg>

输入passwd 命令在gpg>之后

1
gpg >passwd

先输入旧的密钥

1
2
3
4
5
You need a passphrase to unlock the secret key for
user: "Home Nas Server (Home Nas Server Backup) "
4096-bit RSA key, ID 9AABBCD8, created 2013-10-04

Enter passphrase: 在这里输入旧的密钥

然后输入新的密钥:

1
2
3
4
Enter the new passphrase for this secret key.

Enter passphrase: 输入新密钥
Repeat passphrase: 再次输入新密钥

为了保存所有的key设置,我们需要通过save命令来保存

1
gpg> save

Mac OS:终端下使用curl命令下载文件

在mac os下,如何通过命令行来下载网络文件?如果你没有安装或wget命令,那么可以使用curl工具来达到我们的目的。

1
2
3
4
5
6
7
curl命令参数:
curl 'url地址'
curl [选项] 'url地址'
curl -O 'url'
curl -L -O 'url'
curl -o output.file.name.here 'url-here'
curl -o foo.pdf 'http://server1.cyberciti.biz/foo.pdf'

示例:
从osetc.com服务器里下载test.rar文件

1
curl -o test.rar 'http://www.osetc.com/test.rar。'

选项 “-o”会将输出写入到指定的文件test.rar里

在使用curl的时候也可以指定多个url,如下面的例子:

1
2
3
curl -O http://server{1,2,3}.osetc.com/
curl -O http://server{1,2,3}.osetc.com/test.pdf
curl -O ftp://intranet.site.{us,uk,in}.google/reports/test[a-z].tar.gz

Python:如何获取当前的日期和时间

在python里如何获取当前的日期和时间呢?在Python语言里,我们可以通过调用什么模块或者类函数来得到当前的时间或日期呢?

当然你可以使用时间模块(time module),该模块提供了各种和时间相关的函数。但是这个模块里的一些函数在某些平台里不可用。那么怎么办呢?我们
可以使用一个更高级的面向对象的接口函数:datetime。它提供了操作日期和时间的多种简单或复杂的方法。

python里使用time模块来获取当前的时间

1
2
3
time.strftime(format)
time.strftime("%H:%M:%S") ##24小时格式
time.strftime("%I:%M:%S")## 12小时格式

示例
一个获取当天日期和时间的简单python程序

1
2
3
4
5
6
7
#!/usr/bin/python

import time
print (time.strftime("%H:%M:%S"))

## 12 hour format ##
print (time.strftime("%I:%M:%S"))

示例输出:

1
2
18:11:30
611:30

打印出当前的日期的python程序

1
2
3
4
5
#!/usr/bin/python

import time
## dd/mm/yyyy格式
print (time.strftime("%d/%m/%Y"))

示例输出:
11/10/2013

格式参数:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
%a 星期几的简写
%A 星期几的全称
%b 月分的简写
%B 月份的全称
%c 标准的日期的时间串
%C 年份的后两位数字
%d 十进制表示的每月的第几天
%D 月//
%e 在两字符域中,十进制表示的每月的第几天
%F 年--
%g 年份的后两位数字,使用基于周的年
%G 年分,使用基于周的年
%h 简写的月份名
%H 24小时制的小时
%I 12小时制的小时
%j 十进制表示的每年的第几天
%m 十进制表示的月份
%M 十时制表示的分钟数
%n 新行符
%p 本地的AM或PM的等价显示
%r 12小时的时间
%R 显示小时和分钟:hh:mm
%S 十进制的秒数
%t 水平制表符
%T 显示时分秒:hh:mm:ss
%u 每周的第几天,星期一为第一天 (值从06,星期一为0
%U 第年的第几周,把星期日做为第一天(值从053
%V 每年的第几周,使用基于周的年
%w 十进制表示的星期几(值从06,星期天为0
%W 每年的第几周,把星期一做为第一天(值从053
%x 标准的日期串
%X 标准的时间串
%y 不带世纪的十进制年份(值从099
%Y 带世纪部分的十制年份
%z,%Z 时区名称,如果不能得到时区名称则返回空字符。
%% 百分号

使用datetime模块来获取当前的日期和时间
参数如下:

1
2
3
4
5
6
cur=datetime.datetime.now()
cur.hour
cur.minute
cur.year
cur.day
cur.month

例子:

1
2
3
4
5
6
7
8
9
10
11
12
#!/usr/bin/python
import datetime
i = datetime.datetime.now()
print ("当前的日期和时间是 %s" % i)
print ("ISO格式的日期和时间是 %s" % i.isoformat() )
print ("当前的年份是 %s" %i.year)
print ("当前的月份是 %s" %i.month)
print ("当前的日期是  %s" %i.day)
print ("dd/mm/yyyy 格式是  %s/%s/%s" % (i.day, i.month, i.year) )
print ("当前小时是 %s" %i.hour)
print ("当前分钟是 %s" %i.minute)
print ("当前秒是  %s" %i.second)

示例输出:

1
2
3
4
5
6
7
8
9
当前的日期和时间 = 2013-10-11 19:38:19.4545
ISO格式的日期和时间 = 2013-10-11T19:38:19.4545
当前的年份 2013
当前的月份 10
当前的日期  11
dd/mm/yyyy 格式是  11/10/2013
当前小时是 0
当前分钟是 38
当前秒是  19