几个有意思的运维编程题

使用for循环在/oldboy目录下通过随机小写10个字母加固定字符串oldboy批量创建10个html文件,名称例如为:

 

coaolvajcq_oldboy.html  qnvuxvicni_oldboy.html  vioesjmcbu_oldboy.html

gmkhrancxh_oldboy.html  tmdjormaxr_oldboy.html  wzewnojiwe_oldboy.html

jdxexendbe_oldboy.html  ugaywanjlm_oldboy.html  xzzruhdzda_oldboy.html

qcawgsrtkp_oldboy.html  vfrphtqjpc_oldboy.html

#!/bin/bash
letter=(`echo {a..z}`)

function create_filename()
{
filename=`for i in $(seq 10)
do
echo -n ${letter[$(($RANDOM%24))]}
done`_oldboy.html
}

for i in $(seq 10)
do
create_filename
touch $filename
done

用两种将以上文件名中的oldboy全部改成oldgirl(用for循环实现),并且html改成大写

#!/bin/bash
filelist=`ls | grep ".html$"`
for i in $filelist
do
mv $i ${i%%_*}_oldgirl.HTML
done
#!/bin/bash
filelist=`ls | grep ".html$"`
for i in $filelist
do
newfile=`echo $i | awk -F'_' '{print $1"_oldgirl.HTML"}'`
mv $i $newfile
done

批量创建10个系统帐号oldboy01-oldboy10并设置密码(密码为随机8位字符串)。

#!/bin/bash
for i in `seq 10`
do
if [[ $i -lt 10 ]];then
useradd oldboy0$i && echo `cat /dev/urandom | sed 's/[^a-zA-Z0-9]//g' | strings -n 8 | head -n 1` | passwd oldboy0$i --stdin
else useradd oldboy$i && echo `cat /dev/urandom | sed 's/[^a-zA-Z0-9]//g' | strings -n 8 | head -n 1` | passwd oldboy$i --stdin
fi
done

写一个脚本,实现判断10.0.0.0/24网络里,当前在线用户的IP有哪些(方法有很多)

单进程

#!/bin/bash

for i in `seq 2 255`
do
ping 10.0.0.$i -c 1 1>/dev/null && echo 10.0.0.$i: live || echo 10.0.0.$i: dead
done

多进程

#!/bin/bash
tmp_fifofile="/tmp/$$.fifo"
mkfifo $tmp_fifofile
exec 6<>$tmp_fifofile
rm -rf $tmp_fifofile

thread=254
for ((i=0;i<$thread;i++))
do
echo ""
done >&6

for ((i=1;i<254;i++))
do
read -u6
        {
        ping 10.0.0.$i -c 1 1>/dev/null && echo 10.0.0.$i: live || echo 10.0.0.$i: dead
        echo "">&6
        } &
done
wait
exec 6>&-

exit 0

bash for循环打印下面这句话中字母数不大于6的单词(昆仑万维面试题)。

I am oldboy teacher welcome to oldboy training class.

#!/bin/bash
content="I am oldboy teacher welcome to oldboy training class."
new_content=`echo $content | sed 's/\.//'`
echo $new_content
arg=(`echo $new_content`)
for i in ${arg[@]}
do
if [[ ${#i} -le 6 ]];then
echo $i
fi
done

已知下面的字符串是通过RANDOM随机数变量md5sum|cut-c
1-8截取后的结果,请破解这些字符串对应的md5sum前的RANDOM对应数字?

21029299

00205d1c

a3da1677

1f6d12dd

890684b

#!/bin/bash
declare -a array

for i in $(seq 0 32767)
do
array[$i]=`echo $i | md5sum | cut -c 1-8`
done

keys=([0]=21029299 [1]=00205d1c [2]=a3da1677 [3]=1f6d12dd [4]=890684b)
echo "number ------- md5sum"
for key in ${keys[@]}
do
for i in `seq 0 32767`
do
if [[ "${array[i]}" == "$key" ]];then
echo $i ------- $key
fi
done
done
时间: 2024-10-26 09:19:06

几个有意思的运维编程题的相关文章

Python运维编程

Python运维编程 作者:Danbo  2015-10-11 什么是Python,为什么要使用Python? 这个大家自行谷歌,不过看看知乎你就知道Python有多么强大:http://www.zhihu.com/question/25038841  #大蟒蛇是人形自走跑有木有啊! 首先你要知道Python很强大.Python是一个胶水语言(Glue Language).与Perl最大的不同是Python开发的哲学是:用一种方法,最好是只有一种方法来做一件事,而Perl是:总是有多种方法来做同

一道有意思的C语言编程题

最近在看经典的C语言入门书籍K&R,虽然是一本入门书籍,可是其中的精妙之处却需要慢慢体会.其中的经典题很多,仔细琢磨一定会收获良多. 今天看到这样一道题:编写一个删除C语言程序中所有的注释语句.感觉颇有意思,与大家一起分享一下: 我的思路: 找到注释的起始符号 \ 判断紧接着的输入字符,如果是*或者是\,则说明后面全是注释,跳过即可,否则照样输出 其他则直接输出 疑问: 所配套的答案书中提出要考虑引号后面的内容以做出响应,不是很明白这是为什么.个人认为无需考虑引号的影响也能将注释去除,希望有高手

linux运维基础题(三)

awd sed 问题 在每一行后面增加一空行 sed G file  在匹配式样"regex"的行之后插入一空行 sed '/regex/G' file  计算行数(模拟"wc -1") wc -l file  在每一行开头处插入5个空格(使全文向右移动5个空格) sed 's/^/     /'  file  将"foo"替换为"bar",并只在行中未出现字符串"baz"的情况下替换 sed '/baz/

linux运维基础题(二)

1.Linux挂载Winodws共享文件夹 # mount -t cifs //1.1.1.254/ok /var/tmp/share/ -o username=administrator,password=yourpass 2.查看http的并发请求数及其TCP连接状态: netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' 3.用tcpdump嗅探80端口的访问看看谁最高 tcpdump -i eth0 -t

京峰Linux运维培训最新课程大纲

(京峰教育版权)         京峰Linux精英班网络课程大纲           2015年5月27日v2版                   目  录 1.         Linux入门篇.... 4 1. 1      Linux操作系统简介.... 4 1. 2      Linux发展趋势.... 5 1. 3      Linux系统安装.... 6 1. 4      Linux学习技巧.... 21 2.         Linux系统篇.... 22 2.1      

合格linux运维人员必会的30道shell编程面试题及讲解

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://oldboy.blog.51cto.com/2561410/1632876 超深度讲解shell高级编程实战,截至目前shell编程课程国内培训机构最细的课程,不信请看学员表现的水平. 课程牛不牛,不是看老师.课表,而是看培养的的学生水平,目前全免费中伙伴们赶紧看啊. http://edu.51cto.com/course/course_id-5257.html 企业合格的lin

01.运维人员需要学编程

老男孩写过<不懂编程的运维人员到底还能走多远?> http://oldboy.blog.51cto.com/2561410/1749513 从本人工作经验来看,认同他的观点:IT岗位需要的是综合能力强的人员,运维.开发.数据库.网络,技术岗位对上述知识体系都要会一些,才能很好的胜任对应岗位工作. 1.运维人员要会运维.开发.数据库.网络,但侧重点是运维, 2.开发人员要会运维.开发.数据库.网络,但侧重点是开发, 3.数据库人员要会运维,开发,数据库,网络,但侧重点是数据库, 4.网络人员要会

编程题:用二维字符串数组实现。从键盘输入三个学生姓名,并输出。

#include<stdio.h> #include<string.h> void main() { char name[3][30]; int i; for(i=0;i<3;i++) gets(name[i]);  /*name[i]是一个一维字符数组*/ for(i=0;i<3;i++) printf("%s\n",name[i]); } 编程题:用二维字符串数组实现.从键盘输入三个学生姓名,并输出.,布布扣,bubuko.com

编程题:指向二维数组元素的指针变量。功能:已知二维数组a[2][3],输入输出全部元素。

#include<stdio.h> void main() { int a[2][3],i,j; int *p; /*用坐标法输入二维数组元素*/ for(i=0;i<2;i++) for(j=0;j<3;j++) scanf("%d",&a[i][j]); /*用指针法输出二维数组元素*/ p=a[0];         /*等价于p&a[0][0];*/ for(;p<a[0]+6;p++)   printf("%4d&quo