[Linux命令小技巧]关于seq的使用技巧.

seq 可以表达数字,一串数字。 例如 seq 50 就会从一打印到 50 个数字 ,还可以跳着出数。例如想每隔两个数出一个数字 seq 1 2 10 这样就只有奇数输出. 例如想产生一个前边家字符的循环 seq -f ‘yoyojacky%g’ 10 这样就会产生从yoyojacky1-yoyojacky10的字符串。
用于产生从某个数到另外一个数之间的所有整数
  例一:
  # seq 1 10
  结果是1 2 3 4 5 6 7 8 9 10
seq
-f, –format=FORMAT use printf style floating-point FORMAT (default: %g)
-s, –separator=STRING use STRING to separate numbers (default: \n)
-w, –equal-width equalize width by padding with leading zeroes

-f 选项 指定格式
例如:
#seq -f”%3g” 9 11
9
10
11
% 后面指定数字的位数 默认是”%g”,
“%3g”那么数字位数不足部分是空格
#sed -f”%03g” 9 11 这样的话数字位数不足部分是0
% 前面制定字符串
seq -f “yoyojacky%03g” 9 11
yoyojacky009
yoyojacky010
yoyojacky011

-w 指定输出数字同宽 不能和-f一起用
# seq -w -f”test%03g” 9 11
seq: format string may not be specified when printing equal width strings
# seq -w 99 103
099
100
101
102
103
输出是等宽状态的,前面会补零来满足字符长度.

-s 指定分隔符 默认是回车
seq -s” ” -f”student%03g” 9 11
student009 student010 student011

有朋友会问我这个东西做什么用呢?
生成序列有什么用途呢?
其实很多地方都可以用到的,这里举例说明一下,例如在企业里,新构建的邮件服务器需要批量添加用户帐户,100个.
用户名都是以stuff加上用户的序列号,例如stuff001, stuff002,这样的样式,并且需要生成8位随机密码,请你编写一个脚本来实现,做为管理员,你一定会想到很多方法,其中一个比较方便的方法就是写一个批处理添加帐户的脚本.
我们用到的命令是: useradd / passwd来进行帐户的添加和创建密码.可是这样不能够批量创建,想要批量创建的话,这些帐户的序列号很多,一个一个地输入很不方便,我们就可以结合脚本,结合shell的循环语句来实现:
批处理脚本如下:
仅供参考:

批量添加用户

批量添加用户

图中的一些内容需要讲解一下:
userlist=$(seq -f”student%03g” $NUMBER1 $NUMBER2) 语句是为了生成批量的用户,而for语句是为了实现循环, useradd是添加用户,
PASSWD=$(openssl rand -base64 5)这条语句是为了实现8位长度的随机密码, 利用的是openssl语句的随机码功能,rand是实现生成伪随机字节(man openssl 可以看到rand选项的功能是:rand Generate pseudo-random bytes.), base64是基于64位编码的算法, 最后一个5代表生成的随机码的长度:
[root@rhel5 /]# openssl rand -base64 10
TXmei9PawwOGyg==
[root@rhel5 /]# openssl rand -base64 5
kTPtyOA=
[root@rhel5 /]#
这里可以看出来,如果用10位的长度,算出的随机伪码长度16位,不便于用户使用,我们这里利用这个命令生成随机码是为了作为用户的初始密码使用的.所以5位长度的编码生成的随机码就正好8位,满足我们安全的需要了,因此这里用5而不用10或者别的数字.
批量添加用户的脚本执行后的结果:
[root@rhel5 /]# sh test.sh
请输入起始帐户编号(例如:l):1
请输入结束帐户编号(例如:100):5
student001
Changing password for user student001.
passwd: all authentication tokens updated successfully.
student002
Changing password for user student002.
passwd: all authentication tokens updated successfully.
student003
Changing password for user student003.
passwd: all authentication tokens updated successfully.
student004
Changing password for user student004.
passwd: all authentication tokens updated successfully.
student005
Changing password for user student005.
passwd: all authentication tokens updated successfully.
帐户创建完成!!
[root@rhel5 /]#
检查结果看看:
[root@rhel5 /]# tail -n 5 /etc/passwd
student001:x:504:504::/home/student001:/bin/bash
student002:x:505:505::/home/student002:/bin/bash
student003:x:506:506::/home/student003:/bin/bash
student004:x:507:507::/home/student004:/bin/bash
student005:x:508:508::/home/student005:/bin/bash
[root@rhel5 /]#
[root@rhel5 /]# tail -n 5 /etc/shadow
student001:$1$ATIgawOJ$RqNFEs9mU3.SXFi43QtMP.:15313:0:99999:7:::
student002:$1$4Lmxs2cM$Yr4fz7d2xZNcvXHytjn4m/:15313:0:99999:7:::
student003:$1$dY1sdDG5$DXr4ufg1LzamNKDfWhCiR.:15313:0:99999:7:::
student004:$1$qNQP74Jr$TDf1gJfJv2mvMHoX.uuLJ.:15313:0:99999:7:::
student005:$1$XYjo5ri2$pn7uAMZTCqwVaVKL0hwfj/:15313:0:99999:7:::
[root@rhel5 /]#
帐户和密码文件创建完成了,很迅速.
那么我们再去看看生成的随机密码文件:
[root@rhel5 /]# cat password.txt
student001 0jFNDY4=
student002 oeIZ3Dk=
student001 pb+FFi8=
student002 EQ4DqYQ=
student003 d0b7wvI=
student004 BPu1yRk=
student005 e093uig=
[root@rhel5 /]#
这样一来,管理员只要将这些密码交付给用户就可以让用户使用linux资源了.类似的管理需求只要举一反三就可以了…是不是很方便呢?

Posted in Linux | Tagged , , , , , , , , , | Leave a comment

[原创] 基于RHEL5构建DDNS服务器

说起DDNS,很多朋友都不是很陌生,DDNS是动态DNS的简称,什么是动态DNS呢?
就是DNS的数据库中的资源记录可以动态变化的DNS. 我们可以在网上申请的免费域名,例如www.oray.net公司提供的域名解析服务就是通过DDNS的原理实现的.我们在家使用的ADSL拨号上网每次下线后重新登录可能获得的IP地址都不是相同的,那么构建个人站点和绑定域名就成为了一个难题,例如我的个人域名: yoyojacky.vicp.net是长期不变的,可是我的IP地址却在动态变化,电信供应商给我的地址一产生变化,用户就无法通过域名快速访问到我的站点了,那么如果使用了DDNS服务的话,我的IP地址再怎么变化,都能够快速的将IP地址与域名的对应关系写入到DNS服务器数据库中,那么用户查询的时候就不会查不到我的地址了.不就实现了动态IP构建站点的作用了吗?
Continue reading →

Posted in Linux | Tagged , , , , , , , , | 2 Comments

[转载]阿里巴巴理想主义者-厉建宇的离职信

阿里巴巴理想主义者-厉建宇的离职信

三月 29, 2011 by Eugene · 5 Comments

厉建宇是美籍华人,曾经为蓝讯CTO、google工作过,很多观念上跟我们国内大多数同胞有很大的差异,刚到阿里巴巴的时候,曾提出过在甘肃天山建IDC机房,利用天山的雪水冷却机房,再配合丰富的太阳能发电解决用电需求,为此做了详细的调研和有力论证,对于杭州的IDC机房,也提出修建在杭州的山区,利用风力发电+太阳能+自供电解决机房的用电需求,真若能实现可以为阿里巴巴减少非常多的开销,因为一台2U服务器一年的电费大概是2000多块(当然空调等电费必须一起算上),具体数字不记得了。
Continue reading →

Posted in 励志故事, 教学 | Tagged , , , , , , , , , , , , , , , | 2 Comments