Tag: Python

Python fileinput 模组

Linux 下很多系统管理的工作都会涉及读取档案的内容, 在 Python 下可以透过多个方法开启档案、读取 Pipe 及以参数方式读取档案。 fileinput 是 Python 的内建模组, 它可以用很简单的方法, 实现以上的工作。fileinput 模组提供处理一个或多个档案的功能, 可以是透过 Pipe 输入、用参数方法指定档案, 或者在程式码指定档案也可以。 以下是 fileinput 模组的使用例子: 看到上面的程式码很简单, 但已经可以将 Pipe 及 参数输入的档案读取, 并逐行印出, 例如: $ …

Python 读取 Pipe 输入

在 Unix Like 环境下的 Pipe (管线) 十分重要, 它可以将一个程式的输出, 送给另一个程式处理, 只要中间用 “|” 字符相隔, 让几个不同的程式互相配合工作, 以下本章会介绍在 Python 读取 Pipe 输入的方法. 在 Python 要读取 Pipe 输入, 可以用 sys 模组的 sys.stdin, 它会读取 /dev/stdin …

RRD 修改旧资料数值

RRD 是十分好用的统计工具,很多伺服的监测也会使用 RRD。 今天发现 RRD 内的一组数据纪录出错,但 RRD 内建并没有修改旧数据的功能,需要将 RRD 数据库备份成 XML 档,修改 XML 档后,再复原到数据库,以下是修改的方法,在这里记录一下。 1. 例如要修改数据的 RRD 档是 /usr/local/rrd/file.rrd, 先用 rrdtool 的 dump 功能,将 RRD 的资料汇出成 XML 档: # …

Python print 输出时不换行

Python 输出内容跟其他程式语言差不多, 用 print 便可以印出想要的内容, 例如: 这样就会印出 “Hello World!” 到显示器。 但同时 Python 也会自动在最后加上换行 “\n” 的字串, 例如: 上面会印出: Hello World! Hello World! Python 3 要解决较容易, 只要在 print 里面定义参数便可以, 写法如下: 上面第一个 …

Python 字串搜寻并取代

写程式很多时都需要做字串搜寻并取代, 在 Python 内很简单, 只要用内建的 replace 方法便可实现。 语法 以下是 replace() 的语法: 参数: old − 原来字串, 找出并用新字串取代. new − 替换字串, 替换在原来字串内. max − 如果有定义 max 参数, 只会取代最初出现的 “max” 次数的字串. 例子: …

Python 串行(list) 排序方法

以下会列出在 Python 排序串行(list) 的方法, 包括数值及字串进行顺序或倒序排序。 数值排序 使用 sort 方法, 可以对串行内的数值 (包括整数及浮点数) 进行排序: 上面程式码对 myList 串行排序, 执行结果是: 上面所使用的 sort 方法会改变原本的串行排序, 但如果想保留原本的串行排序, 那便要用 sorted 函式, 例如: 执行结果与上面的例子一样, 分别是保留原来 myList 的排序, 将新结果放入新建立的串行 …

Shell Script 使用 #!/usr/bin/env

在 Shell Script 的第一行称为 shebang, shebang 由 “#!” 开头, 并在后面加上解译器的绝对路径, 即类似: #!/bin/sh #!/bin/bash #!/usr/bin/perl #!/usr/bin/python 如果 Shell Script 不同的平台执行, 指定的解译器可能位置有所不同, 如果想增加 Shell Script 在不同 Unix Like 环璄的可流动性, 可以使用 /usr/bin/env …

产生 /etc/shadow 格式的加密密码

Linux 将系统帐号关于密码的资讯储存在档案 /etc/shadow, 而密码是经过加密。不论基于任何原因, 如果需要手动编辑 /etc/shadow 的密码, 便需要产生一个与 /etc/shadow 使用相同加密方式的密码。而且不用安装其他工具, 用 Python 便可以产生这个加密密码。 在 shadow 内的加密密码, 以下列格式储存: $ID$SALT$ENCRYPTED 上面的 $ID 是加密方式, $SALT 是一个最多 16 位的随机字串, $ENCRYPTED 则是 password hash. …

Python 询问使用者 yes / no

编写在 CLI 执行的程式, 很多时都会用到询问使用者 yes / no 是否执行, 以下记录一下在 Python 的写法: 例如: 上面程式很简单询问是否继续, 如果输入 “yes” 则会输出 “Hello World!”. 上面程式必须输入 “yes” 才会输出 “Hello World!”, 如果输入 “Yes” 则不会继续, 其中一个方法是将 if 判断式加入多一个选项, …