1.Linux挂载Winodws共享文件夹
- 在windows下建立一个共享文件夹。
- 确认你的linux安装了samba软件包及其客户端程序(smbclient),因为samba就是提供linux与windows互访的程序。
- 开始查看windows下的共享文件目录:smbclient –L //192.168.1.1,如果连接正常,就可以看到windows下的共享目录了(字符形式)。
- 挂载共享目录:mount –t cifs –o username=“”,passwd=“” /192.168.1.1/共享文件夹/ /mnt/
2、查看http的并发请求数及其TCP连接状态:
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
- 这句代码暂时还没弄清楚,还在找资料,弄清楚后,会再上传。
3、用tcpdump嗅探80端口的访问看看谁最高
tcpdump -i eth0 -tnn dst port 80 -c 1000 | awk -F"." '{print $1"."$2"."$3"."$4}' | sort | uniq -c | sort -nr |head -20
- tcpdump -i eth0 -tnn dst port 80 -c 1000:统计本机中目标端口为80的数据包,-tnn:直接以IP及port number显示,而非主机名与服务名称,并且不显示时间戳。-c 1000:统计1000个数据包。
- awk –F "." '{print $1"."$2"."$3"."$4}':对tcpdump的输出一行一行得进行处理,以.作为分隔域,将远程主机IP依次打印出来。
- sort:对输出的访问端IP进行排序。
- uniq –c:将相同行合并,并统计相同行的数量。
- sort –nr:以相同行数量进行排序,反向排序,最大的放在最前面。
- head -20:提取前20行。
4、统计指定目录的文件个数
find / -type f | wc –l
- find / -type f:找出根目录下,一般文件。
- wc –l:统计行数。
5、查看IP连接数(访问本机的远程主机数量)
netstat -n | awk '/^tcp/ {print $5}'| awk -F: '{print $1}' | sort | uniq -c | sort –rn
- netstat –an:列出本机的所有网络连接,包括TCP/UDP和Unix socket两部分。
- awk '/^tcp/ {print $5}':/^tcp/:条件是以tcp开头的行,^:在此处代表行首的意思。{print $5:将第5个字段打印出来,代表远程主机的IP和port,默认是以tab作为分隔域。
- awk -F: '{print $1}':“-F:”:以:作为分隔域;打印第一个字段,将port去掉,只显示IP。
- sort:将IP进行排序。
- uniq –c:将相同行合并,并统计相同行的数量。
- sort –r:以相同行数量进行排序,反向排序,最大的放在最前面。
6、shell下32位随机密码生成(数字加字母)。
- 方法1:(有点问题)
cat /dev/urandom | sed –e ‘s/[^a-zA-Z0-9]//g’|strings –n 32|head –n 1
- /dev/urandom:产生随机数的文件。
- sed –e ‘s/[^a-zA-Z0-9]//g’:将产生的数据,一行一行进行处理,非字母数字内容删除掉。
- string –n 32:设置字符串的位数为32位,也是对每一行进行处理。
- head –n 1:提取第一行的内容。
- 参考资料:http://blog.csdn.net/taiyang1987912/article/details/39997303
- 方法2:
cat /proc/sys/kernel/random/uuid| md5sum | cut –c 1 -32
- cat /proc/sys/kernel/random/uuid:读取UUID码文件,每次获得的数据都会不同,为8-4-4-4-12形式数字加字母的字符串。
- md5sum :将UUID码转换为MD5码(有问题?);
- cut –c 1-32:选取每行中的1-32字符的内容。
7、统计出apache的access.log中访问量最多的5个IP
cat access_log_2011_06_26.log |awk '{print $1}'|uniq -c|sort -r |head -n 5
- 查看日志文件即可
8、如何查看二进制文件的内容
hexdump -C [filename]:使用hexdump命令即可。
9、ps aux 中VSZ代表什么意思 ,RSS代表什么
- ps aux:查看系统正在运行的所有进程。
- a:显示所有与终端相关的进程,由终端发起的.
- x:显示所有与终端无关的进程.
- u:显示用户导向的用户列表.
- VSZ:虚拟内存集,进程占用的虚拟内存空间
- RSS :物理内存集,进程占用实际物理内存空间.
- S:可中断的睡眠态
- R:运行态
- D:不可中断的睡眠态
- T:停止态
- Z:僵死态
10、检测并修复/dev/hda5
umount /dev/hda5 ; e2fsck -p /dev/hda5;mount /dev/hda5:卸载/dev/hda5;-p:不询问使用者意见,便自动修复文件系统;检测并修复完毕后,记得再重新挂载/dev/hda5。
11、Linux开机启动顺序
开机顺序:
- BIOS程序读取CMOS上的信息到内存中,取得各项硬件的参数,对硬件进行检测和初始化(POST,Power-on self-test,加电自检),并决定启动设备次序。
- BIOS读取MBR中的引导装载程序(boot loader)到内存中。
- 引导装载程序将内核文件读入内存,内核加载后,重新检测硬件并加载各硬件的驱动程序,使硬件准备就绪!
- 运行第一个进程initrd,并逐步启动各种服务。
5) 此外,如果是多系统主机,还包括引导加载程序和grub的内容。每个分区也会有引导扇区(boot sector),用于完成多重引导功能。
12、符号链接和硬链接的区别
- 硬连接(实际连接):在目录的block中将多个文件名对应一个inode,可以理解为文件的别名,不需要占有额外的inode和block,只需要在目录的block下添加点数据。只能对文件使用硬连接,对目录不行。使用命令 ln filename1 filename2,将文件filename1产生一个硬连接(别名)filename2.
- 符号连接(快捷方式):创建一个文件(inode+block),block记载需连接文件的目录的inode及该文件的文件名,变形成了符号链接,可以理解为快捷方式。符号连接可以针对目录。ln –s filename1 filename2
13、保存当前磁盘分区的分区表
sfdisk -d /dev/sdb >/etc/sdbpar.bak :保存分区表
- sfdisk –d /dev/sdb:查看整块硬盘sdb的分区表。
14、检测并自动修复文件系统
e2fsck - check [a Linux ext2/ext3 file system]
-B 指定块大小
-f 强制检测.
-p 自动修复文件系统
- 与第10题一样
15、手动安装grub
手动安装grub
- grub-install --boot-directory=[指定boot目录] DEVICE(文件系统)
- grub
grub>root (hd0,0):第一个硬盘的第一个分区
grub>setup (hd0):
- grub为开机后系统的引导程序,提供开机时选择进入哪个系统(多系统环境)。
16、改内核参数
# sysctl
-p 不用重启系统,让内核重读/etc/sysctl.conf文件
-a 显示所有内核参数及其正在使用的值.
-w 临时设置/etc/sysctl.conf参数 sysctl -w net.ipv4.ip_froward=0
- 此题我也不懂…^_^
17、在指定范围内取随机数
echo $(($RANDOM%39)):对39进行取余,余数肯定是39以内的数字.
18、限定apache的HTTP服务器:每秒钟连接数为1,峰值为3
iptables -A INPUT -d 172.16.100.1 -p tcp --dport 80 -m limit --limit 1/second --limit-burst 3 -j ACCEPT
- –A INPUT:新增加一条INPUT表格规则。
- –d 172.16.100.1:目标主机的IP即本机。此处也可换乘-i eth0:eth0为HTTP的对外网卡,表示想要进入此网卡的数据包。
- –p tcp --dport 80:tcp协议,目标端口为80。
- –m limit --limit 1/second --limit-burst 3:限制每秒钟连接数为1,峰值为3。
- –j ACCEPT:操作为接受。
19、FTP主动与被动模式
- 主动模式
- 客户端随机启动一个大于1024的端口A,和FTP服务器端的命令端口21,经过三次握手后,建立命令传送通道。
- 客户端再启动一个端口(端口号为:A+1),并通过命令传送通道,告知服务器端。
- 服务器端接受到端口后(A+1),就主动通过20端口和客户端A+1端口进行三次握手连接,建立数据传送通道。
- 但是由于客户端可能存在防火墙的原因,使得服务器端无法连接到客户端的A+1,这就产生了被动连接模式了。
- 被动模式
- 客户端随机启动一个大于1024的端口A,和FTP服务器端的端口21,经过三次握手后,建立命令传送通道。
- 服务器端随机启动一个端口B,并通过命令传送通道告知客户端。
- 客户端接受到端口后(B),就启动端口(A+1),和服务器端的B端口经过三次握手连接,建立数据传送通道
20、显示/etc/inittab中以#开头,且后面跟一个或多个空白字符,而后又跟了任意个非空白字符的行;
grep "^\#[[:space:]]\{1,\}.\{1,\}" /etc/inittab
- ^:行首;\#:转义字符;[[:space:]]\{1,\}:代表一个或多个空白字符。
- .\{1,\}:.代表一定有一个任意字符。正则表达式特殊符号。
21、显示/etc/inittab中包含了:一个数字:(即两个冒号中间一个数字)的行;
grep "\:[0-9]\:" /etc/inittab
- \:转义字符
- [0-9]:代表一定有0-9中的一个数字,
22、怎么把自己写的脚本添加到服务里面,即可以使用service命令来调用
- 编写测试脚本test
!/bin/bash
chkconfig: - 90 10
description: just a test
echo "Hello,$1"
- 使脚本能够被service命令调用
- mv test /etc/init.d/:将脚本放置到stand alone目录下。
- chmod +x /etc/init.d/test:对文件添加x权限,代表可执行。
- chkconfig --add test:增加所指定的系统服务,让chkconfig指令得以管理它,并同时在系统启动的叙述文件内增加相关数据。
- service test start :开机系统服务“test”。
23、写一个脚本,实现批量添加20个用户,用户名为user1-20,密码为user后面跟5个随机字符
#!/bin/bash
for i in {1..20};
do
pass=$( cat /proc/sys/kernel/random/uuid| md5sum | cut –c 1 -5):读取uuid文件,生成一个包含5个数字或字母的随机数,${cmd}为取得命令的结果。
useradd user${i}:添加用户user1-user20
echo $pass | passwd user${i} –stdin:给用户设置密码,--stdin:通过前一个管道输出,来作为密码输入。
echo "user${i} <=============> $pass" >> ./userlist.out:将用户和密码以累加的方式写入到userlist.out文件中。
done
echo 'Sucess,passwd is in userlist.out':添加成功。
24、写一个脚本,实现判断192.168.1.0/24网络里,当前在线的IP有哪些,能ping通则认为在线。
- 方法1,使用ping命令:
#!/bin/bash
ips="192.168.1."
for i in {1..254}; do
ping -W 1 -c 1 ${ips}${i} &>/dev/null && echo "${ips}${i} is up" | tee -a uplog.txt || echo "${ips}${i} is down"
- ping -W 1 -c 1 ${ips}${i}:向指定IP发送ICMP数据包,-W 1:等待1秒钟;-c 1:ping一次。
- &>/dev/null: &>等同2>1&:将错误信息和正确信息分开,输入到/dev/null,此处只有错误信息,因此也可使用2>/dev/null。
- && echo "${ips}${i} is up":如果能够ping通过,输出IP在线的信息。
- |tee -a uplog.txt:以累加方式将在线IP记录到文件uplog.txt。
- || echo "${ips}${i} is down":如果通过ping不通过,输出IP不在线的信息。
done
echo "Please read uplog to know which host is online. ":在线用户在文件uplog中。
2)方法2,使用nmap命令
nmap –sp 192.168.1.0/24:通过数据包检测,分析局域网内有几台主机是启动的。