Tag: Shell Script

Shell Script 英文字母大小写转换

写程式很多时要将英文字母大小写转换, 例如想将第一个字母转成大写; 将 hostname 转换成全部大写或小写等。Shell Script 可以用 tr 指令完成。例如: 上面的 tr 会将 “sam tang” 转换成 “SAM TANG”, 如果是将大写转换成小写, 将 及 互换即可。 而 tr 另一种写法可以这样写: bash 提供了另一个方法, 使用 “^” 转换第一个字母成大写; …

Shell Script 修改系统帐号密码

在 Linux 要修改帐号密码, 可以用 passwd 完成。passwd 需要从 stdin 输入新密码, 但很多情况需要用非互动的方式修改, 即一行指令修改密码。例如用 Shell Script 建立新帐号后, 立即修改新用户的密码。 以下会示范不用从 stdin 输入新密码的情况下, 用一行指令修改帐号密码的方法。 版本较新的 Linux 的 passwd 指令, 支援 –stdin 参数, 即不会要求输入两次新密码作为确认, 这样只要用 …

Linux 检视指令的执行时间

在 Linux 下要找出个别指令或 process 的执行时间, 可以用 GNU time 实现, 这个工具可以很简单地测量指令的执行时间。而 “time” 指令已经内建在主要 Linux 发行版。 要测试一个指令的执行时间, 只要在 time 指令后加上要测量的指令, 例如: # time ls 以下是输出的例子: dir1 dir2 file1 file2 real 0m0.003s …

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 …

Shell Script 产生乱数

Shell Script 提供了 $RANDOM 变量,直接用 echo 印出或调用已经可以产生乱数。用 $RANDOM 产生的随机数会在 0 – 32767 之间,而每次使用 $RANDOM 后,它便会被定义一个新的数值,以下是使用例子: $ echo $RANDOM 这样便会印出一个随机数。 以上方法虽然简单,但最大的问题是不能定义随机数的长度,因为 $RANDOM 只会产生介乎 0 – 32767 之间的数值。 要定义乱数的长度,可以用 awk 来做,例如: …

Wrapper Script – 替现有指令扩充功能

Wrapper Script 在 Unix Like 环境十分常见,它不会重新建立一个新的程式,而是会读取 input 后加入所需的功能,再将 input 直接传送给现有的指令。以下是 wrapper script 的简单例子: 以上 Wrapper Script 实际上没有什么用途,它只是将输入直接传送给 /root/bin/my-script.sh,所以执行以上 Wrapper 跟执行 /root/bin/my-script.sh 是没有分别,因为没有加入任何新功能。如果有用过 QMail 的应该会编辑过 daemontools 的 run script, 这个 …

Shell Script 自动登入 FTP 上下传档案

在 Linux Server 上要用 ftp 传送档案,可以用 ftp 指令手动完成,但如果需要经常对特定档案用 ftp 上传及下传,可以用 Shell Script 自动连接到 ftp 服务器并传送档案。 以下是用 Shell Script 登入 ftp 服务器的例子: 以上 Shell Script 会自动登入 ftp.yourftp.server,并会上传 filename.txt 到 ftp …

Linux 产生随机密码

在 Linux 下要产生随机密码字串,可以用以下指令: 执行后便会输出一组 16 个字符的随机密码。 要自订密码的长度,只需修改上面 head -c 16, 将 16 改成想要的密码长度,例如要产生 8 个位的密码,便改成:

rsync 透过 SSH 传送及备份档案

rsync 是很常用的档案传送工具,以下会介绍用 rsync + SSH 传送档案,并以 CentOS 7 作为测试环境。 第一步先在 Server 产生一组 public SSH keys, 该 Client 端可以不用输入密码登入 SSH: 现在可以将 public.key 的内容复制起来,可以用 cat 指令: 将以上 public.key 内容复制后,登入到 Client 端,并储到到 …