这些脚本你都能写出来吗?RH033级别简单脚本

写一个脚本:
1、创建目录/tmp/scripts
2、切换工作目录至此目录中
3、复制/etc/pam.d目录至当前目录,并重命令为test
4、将当前目录中的test及其里面的文件和子目录的属主改为redhat
5、将test及其子目录中的文件的其它用户的权限改为没有任何权限

写一个脚本:
1、显示当前系统日期和时间,而后创建目录/tmp/lstest
2、切换工作目录至/tmp/lstest
3、创建目录a1d, b56e, 6test
4、创建空文件xy, x2y, 732
5、列出当前目录下以a、x或者6开头的文件或目录;
6、列出当前目录下以字母开头,后跟一个任意数字,而后跟任意长度字符的文件或目录;

写一个脚本,完成以下功能:
1、传递两个整数给脚本,让脚本分别计算并显示这两个整数的和、差、积、商

写一个脚本:
1、切换工作目录至/var
2、依次向/var目录中的每个文件或子目录问好,形如:
(提示:for FILE in /var/*; 或for FILE in `ls /var`; )
Hello, log
Hello, run
3、统计/var目录下共有多个文件,并显示出来


写一个脚本:
1、设定变量FILE的值为/etc/passwd
2、使用循环读取文件/etc/passwd的第2,4,6,10,13,15行,并显示其内容;(提示:LINE=`head -2 /etc/passwd | tail -1`可以取得第2行)
3、把这些行保存至/tmp/mypasswd文件中

写一个脚本:
1、设定变量FILE的值为/etc/passwd
2、依次向/etc/passwd中的每个用户问好,形如: (提示:LINES=`wc -l /etc/passwd | cut -d" " -f1`)
Hello, root.
3、统计一共有多少个用户

写一个脚本:
1、设定变量FILE的值为/etc/passwd
2、依次向/etc/passwd中的每个用户问好,并且说出对方的ID是什么,形如: (提示:LINES=`wc -l /etc/passwd | cut -d" " -f1`)
Hello, root,your UID is 0.
3、统计一共有多少个用户

写一个脚本:
1、添加10个用户user1到user10,但要求只有用户不存在的情况下才能添加;


写一个脚本:
1、通过ping命令测试192.168.0.151到192.168.0.254之间的所有主机是否在线,
如果在线,就显示"ip is up."
如果不在线,就显示"ip is down."

写一个脚本:
1、将/var/目录下所有文件的文件名的首字母和尾字母显示时改为大写;


写一个脚本:
1、将/etc/sysctl.conf文件中以非#(井号)开头的行保存至/tmp/sysctl.conf中
2、如果/tmp/sysctl.conf文件中net.ipv4.ip_forward的值为0的话,则将其值修改为1
3、按次序逐个显示等于号之前的指令的名字,并在每一个指令名字添加其编号,形如:
1 net.ipv4.ip_forward
2 kernel.sysrq
4、为/tmp/sysctl.conf文件中的每一行添加注释,即在每一非空白行之前添加一个以#开头的行,并保存至文件中。内容形如:
# A parameter.

写一个脚本:
1、假设某文件中有如下行:
/etc/inittab
/etc/pam.d/sudo
/usr/share/doc
/usr/local/
/etc/sysconfig/
/var/log/messages
2、取出如上文件中每一行文件名中不包含路径的文件名,比如,/etc/inittab的文件名为inittab,/etc/sysconfig/的文件名为sysconfig;
3、把每个文件名的第二个字母显示时改为大写;

1、写一个脚本:
判断一个文件是否存在,如果存在就显示其存在;

2、写一个脚本:
判断一个文件是否存在,如果存在就显示其存在;否则就显示其不存在;

3、写一个脚本:
1)让用户通过命令行传递一个路径;
2)判断:
如果是普通文件,显示之;
否则,如果是目录,显示之;
否则,如果是链接,显示之;
否则,显示无法识别

4、计算100以内所有偶数的和;

5、写一个脚本:
判断用户输入的是否为Q或者q,如果是,就显示”Quting...";否则,就显示,“Are you crazy?”;

写一个脚本:
1、判断一个指定的脚本是否是语法错误;如果有错误,则提醒用户键入Q或者q无视错误并退出,其它任何键可以通过vim打开这个指定的脚本;
2、如果用户通过vim打开编辑后保存退出时仍然有错误,则重复第1步中的内容;否则,就正常关闭退出。

写一个脚本:
1、要求用户从键盘输入一个用户名,判断此用户是否存在,如果存在,则返回此用户的默认shell;如果不存在,提示用户不存在。
2、判断完成以后不要退出脚本,而是继续提示N|n(next)用户输入其它用户名以做出下一个判断,而键入其它任意字符可以退出;

写一个脚本:
1、向系统中添加20个用户,名字为linuxer1-linuxer20,密码分别为其用户名,要使用while循环;
2、要求:在添加每个用户之前事先判断用户是否存在,如果已经存在,则不再添加此用户;
3、添加完成后,显示linuxer1-linuxer20每个用户名及对应的UID号码和GID号码,形如
stu1, UID: 1000, GID: 1000 (此步要求使用awk实现)

写一个脚本:
1、扫描192.168.0网段内的主机的在线状态,但需要提示用户输入一段IP地址范围,方式是指定起始IP和结束IP;显示结果形如:
The host 192.168.0.1 is UP.
The host 192.168.0.2 is DOWN.
2、使用while循环实现;
3、主机在线状态的输出结果既要显示在屏幕上,同时要求所有主机信息也保存一份至/tmp/host_state;
4、为/tmp/host_state文件中所有主机状态为DOWN的行的行首添加一个#(井号);
5、分别显示指定范围内所有在线的主机总数和不在线主机总数;

写一个脚本:
显示当前系统上所有其VSZ段的值大于4000的进程的进程名字、进程号和VSZ值的大小;

写一个脚本:
查看redhat用户是否登录了系统,如果登录了,就通知当前脚本执行者“redhat is logged on.”;
否则,就睡眠5秒钟后再次进行测试;直到其登录为止退出;
要求:使用until循环

写一个脚本:
1、提示用户选择所要设置的网卡;
2、提示用户使用dhcp或者static作为选定网卡的BOOTPROTO
a、如果用户选择dhcp,则将其配置文件中的BOOTPROTO的值设为dhcp,而后重启此网卡;
b、如果用户选择static,则将其配置文件中的BOOTPROTO的值设为static,并提示用户输入IP地址,子网掩码和网关;其中网关可以为空,但IP地址或子网掩码不能为空;设置完成后重启此网卡;
3、无论上述动态或静态设定,设定完成后将网卡IP地址设定后信息再次显示给用户;

考虑:1、如果用户没有做出任何修改之前就不想设置了,如何退出?
2、如果用户已经设定了一些信息,如IP地址等却又不想设置了,而使用了Ctrl+c,如何处置?

写一个脚本:
1、扫描192.168.0网段内的主机的在线状态,但需要提示用户输入一段IP地址范围,方式是指定起始IP和结束IP;显示结果形如:
The host 192.168.0.1 is UP.
The host 192.168.0.2 is DOWN.
说明:此段要求使用函数实现;
2、使用while循环实现;
3、主机在线状态的输出结果既要显示在屏幕上,同时要求所有主机信息也保存一份至/tmp/host_state;
4、为/tmp/host_state文件中所有主机状态为DOWN的行的行首添加一个#(井号);
5、分别显示指定范围内所有在线的主机总数和不在线主机总数;


写一个脚本:
1、提示用户输入一个用户名;
2、使用函数实现:
判断一个用户是否存在,用户名通过参数传递而来;
如果存在,就显示此用户的shell和UID
如果不存在,就说此用户不存在;

写一个脚本:
1、提示用户可以输入”mem"查看本机物理内存使用信息,"swap"显示虚拟内存使用信息;
2、当用户输入mem时,获取当前主机物理内存的大小,已经使用的空间及空闲空间大小;如果已用空间超出总空间的90%,则以红色字体警告;否则,则以绿色字体显示空间剩余百分比;
3、当用户输入"swap"时,获取当前主机虚拟内存的大小,已经使用的空间及空闲空间的大小;如果已用空间超出总空间的90%,则以红色字体警告;否则,则以绿色字体显示空间剩余百分比;
4、其它信息则说明是错误输入;


写一个脚本:
1、用一个函数实现获取当前主机物理内存的大小,已经使用的空间及空闲空间大小;如果已用空间超出总空间的90%,则以红色字体警告;否则,则以绿色字体显示空间剩余百分比;
2、用一个函数实现获取当前主机虚拟内存的大小,已经使用的空间及空闲空间的大小;如果已用空间超出总空间的90%,则以红色字体警告;否则,则以绿色字体显示空间剩余百分比;
3、显示一个提示给用户,说明输入mem可以显示物理内存空间使用情况;输入swap可以显示虚拟内存空间使用情况;其它任意字符提示用户脚本使用方法后退出脚本;

写一个脚本:
1、定义一个函数
1)可以接受参数mem或swap;
2)当接受参数mem时获取当前主机物理内存的大小,已经使用的空间及空闲空间大小;如果已用空间超出总空间的90%,则以红色字体警告;否则,则以绿色字体显示空间剩余百分比;
3)当接受参数swap时获取当前主机虚拟内存的大小,已经使用的空间及空闲空间大小;如果已用空间超出总空间的90%,则以红色字体警告;否则,则以绿色字体显示空间剩余百分比;
3、在主程序中显示一个提示给用户,说明输入mem可以显示物理内存空间使用情况;输入swap可以显示虚拟内存空间使用情况;其它任意字符提示用户脚本使用方法后退出脚本;

写一个脚本
1、如果/tmp/net目录存在就切换至此目录,否则就先创建此目录,而后切换进去;
2、下载ftp://192.168.0.254/pub/Files/rh033.txt至此目录中,并将名字设置为在原名字后面添加上当前日期和时间,形如:
rh033-2011-04-25-09-31-10.txt
3、下载完成后向用户报告完成下载。


写一个脚本:
1、创建一个函数,能接受两个参数:
1)第一个参数为URL,即可下载的文件;第二个参数为目录,即下载后保存的位置;
2)如果用户给的目录不存在,则提示用户是否创建;如果创建就继续执行,否则,函数返回一个51的错误值给调用脚本;
3)如果给的目录存在,则下载文件;下载命令执行结束后测试文件下载成功与否;如果成功,则返回0给调用脚本,否则,返回52给调用脚本;
2、主函数:
1)提示用户输入要下载文件的URL和保存的目录;
2)调用函数执行下载;如果函数返回0,则告诉用户下载成功;如果函数返回51,则告诉用户用户给定的目录不存在导致下载失败;如果函数返回52,则告诉用户下载过程失败;

百度的两道shell编程面试题:
1、写脚本实现,可以用shell、perl等。在目录/tmp下找到100个以abc开头的文件,然后把这些文件的第一行保存到文件new中。
2、写脚本实现,可以用shell、perl等。把文件b中有的,但是文件a中没有的所有行,保存为文件c,并统计c的行数。


某公司Shell脚本面试题

一个文本文件内容如下:
user1 abcd
user2 g23d
user3 vgq2
…… ……

根据文件内容批量创建用户,第一列为用户名,第二列为对应用户的密码;

写一个脚本:
1、下载文件ftp://192.168.0.254/pub/Files/access_log至/tmp目录;
2、分析并显示/tmp/access_log文件中位于行首的IP中出现次数最多的前5个,并说明每一个出现了多少次;
3、取出/tmp/access_log文件中以http://开头,后面紧跟着一个域名或IP地址的字符串,比如:http://www.linux.com/install/images/style.css 这个串的http://www.linux.com的部分;而后显示出现次数最多的前5个;
要求:第2、3功能各以函数的方式实现;


运维工程师面试题:
编写shell脚本获取本机的网络地址。比如:本机的ip地址是:192.168.100.2/255.255.255.0,那么它的网络地址是192.168.100.1/255.255.255.0。


卡巴斯基面试题:
某文件内容如下:
jack huaxue 90
tom huaxue 70
jack shuxue 99
tom shuxue 80

要求算出jack和tom的2科的平均分,用shell实现

你可能感兴趣的:(这些脚本你都能写出来吗?RH033级别简单脚本)