1、编写脚本实现登陆远程主机。(使用expect和shell脚本两种形式)。
三个基础shell命令:
send命令:接收一个字符串参数,并将该参数发送到进程.
expect命令:和send命令正好相反,expect通常是用来等待一个进程的反馈。expect可以接收一个字符串参数,也可以接收正则表达式参数。
spawn命令:用来启动新的进程的。spawn后的send和expect命令都是和spawn打开的进程进行交互的
# 登录到ftp服务器ftp ftp.uu.net上,并以二进制的方式下载服务器上的文件test.tar.gz
set timeout -1
spawn ftp ftp.test.com //打开新的进程,该进程用户连接远程ftp服务器
expect "Name" //进程返回Name时
send "user\r" //向进程输入anonymous\r
expect "Password:" //进程返回Password:时
send "123456\r" //向进程输入don@libes.com\r
expect "ftp> " //进程返回ftp>时
send "binary\r" //向进程输入binary\r
expect "ftp> " //进程返回ftp>时
send "get test.tar.gz\r" //向进程输入get test.tar.gz\r
综上所述,expect形式远程登录主机:
#!/usr/bin/expect
set ip 10.0.0.7
set user root
set password ********
set timeout 10 //设置expect命令等待时间最长为30s
spawn ssh $user@$ip //是使用spawn来执行ssh Team002@198.175.102.32 -p 10000这条命令
expect {
"yes/no" { send "yes\n";exp_continue }
"password" { send "$password\n" }
}
interact
shell形式:
#!/bin/bash
ip=10.0.0.7
user=root
password=********
expect <<EOF
set timeout 20
spawn ssh $user@$ip
expect {
"yes/no" { send "yes\n";exp_continue }
"password" { send "$password\n" }
}
expect eof
EOF
2、生成10个随机数保存于数组中,并找出其最大值和最小值

3、输入若干个数值存入数组中,采用冒泡算法进行升序或降序排序


4、总结查看系统负载的几种命令,总结top命令的指标大概什么含义(不要求全部写出来)
uptime:查看系统平均负载,显示了现在时间、系统已运行时间,目前登录用户数、系统最近1分钟、5分钟、15分钟内的平均负载。与top命令显示的第一行信息类似。![]()
mpstat:百分比显示CPU利用率的各项指标,与iostat用法类似
free:查看内存空间的使用状态
pmap:查看进程对应的内存映射,可以看到进程依赖的子模块占用的内存数量,可以以此判断OOM
vmstat:查看虚拟内存的信息,可以以用户定义的间隔不断刷新状态,能够看到内存与SWAP、磁盘之间的IO情况;
iostat:用于监控系统输入/输出设备和CPU的使用情况,-m可以自定义刷新间隔判断哪块硬盘的IO比较繁忙;-x参数可以看到更丰富的IO性能状态,如磁盘基于扇区的IO,队列长度,处理时间等
ifstat:显示网络带宽的使用情况,查看访问当前主机的流量的实时信息,实时连接等;
lsof:-c可查看进程打开的文件,-p文件打开的进程,也可用于查看端口是否为打开状态;
COMMAND:进程的名称
PID:进程标识符
USER:进程所有者
FD:文件描述符
TYPE:文件类型
DEVICE:磁盘设备名称
SIZE/OFF:文件大小
NODE:索引节点
NAME:进程打开文件名称
top命令:监控linux系统的系统状况,常用的性能分析工具,实时显示系统中各个进程的资源占用情况。
-d:number代表秒数,表示top命令显示的页面更新一次的间隔。默认是5秒。
-b:以批次的方式执行top。
-n:与-b配合使用,表示需要进行几次top命令的输出结果
-p:指定特定的pid进程号进行观察

第一行top:
09:41:32 当前系统时间
up 11 min,系统已经运行了11分钟
1 user, 当前登录系统的用户数量是1个
load average: 0.15, 0.67, 0.56 系统负载(任务队列的平均长度),三个值分别为: 1分钟前到现在任务队列的平均长度,5分钟前到现在任务队列的平均长度,15分钟前到现在任务队列的平均长度【这三个一般会小于1,如果持续高于5,请仔细查看哪个程序影响系统的运行】
第二行Tasks:
239 total: 总的进程数为239,
1 running: 正在运行中的进程数为1,
239 sleeping: 挂起的进程数为239,
0 stoped: 停止的进程数为0,
0 zombie: 僵尸进程数为0
第三行%Cpu(s):
0.2 us: 用户空间占用CPU时间百分比为0.2%,
0.2 sy: 内核空间占用CPU时间的百分比0.2%,
0.0 ni: 用户空间内改变过优先级的进程占用CPU时间的百分比,
98.6 id: 空间CPU百分比,
0.0 wa: 等待IO的CPU时间百分比,
0.8 hi: CPU服务于硬件终端所耗费CPU时间百分比,
0.2 si: CPU服务于软件终端所耗费CPU时间百分比,
0.0 st: 虚拟机偷走的时间
第四行KiB Mem:
total, 物理内存总量,
free空闲物理内存,
used 已使用的物理内存,
buff/cache:内核缓存的内存量
第五行KiB Swap:
0 total 交换区总量为0KB,
0 free 空闲交换区总量为0KB,
0used 已使用交换区总量为0KB,
378300 avail Mem 交换区可用内存为378300KB
下方数据表头:
PID:进程ID
USER: 进程所有者
PR: 进程优先级
NI:nice值,负值表示高优先级,正值表示低优先级
VIRT:进程使用的虚拟内存总量
RES: 进程使用的未被换出的物理内存
SHR: 共享内存大小
S: 进程状态,D为不可中断的睡眠状态,R为运行,S为睡眠,T为跟踪/停止,Z为僵尸进程
%CPU: 进程占用的CPU百分比
%MEM:进程使用的物理内存百分比
TIME+:进程使用的CPU时间总计,单位1/100秒
COMMAND:进程名称(命令名/命令行)
5、编写脚本,使用for和while分别实现192.168.0.0/24网段内,地址是否能够ping通,若ping通则输出"success!",若ping不通则输出"fail!"


6、每周的工作日1:30,将/etc备份至/backup目录中,保存的文件名称格式 为“etcbak-yyyy-mm-dd-HH.tar.xz”,其中日期是前一天的时间
首先编写脚本:
测试脚本:
![]()
最后通过crontab命令将脚本设置为定时执行
本文探讨了如何使用expect和shell脚本进行远程主机登录,包括FTP文件下载,以及通过shell命令实现数据随机数处理、数组排序及系统负载监控。同时,我们关注了top命令的使用和192.168.0.0/24网段ping通检测。




10万+

被折叠的 条评论
为什么被折叠?



