Linux学习 第六周

  • 1、编写脚本实现登陆远程主机。(使用expect和shell脚本两种形式)。

  expect实现:

[root@localhost ~]# cat ssh_expect.sh 
#!/usr/bin/expect
IP=192.168.237.18
PASS=000000
spawn ssh root@$IP
expect {
  "*yes/no*" { send "yes\r";exp_continue }
  "*password:*" { send "$PASS\r" }
}
#expect eof
interact

  shell实现:

[root@localhost ~]# cat ssh_shell.sh 
#!/bin/bash
IP=192.168.237.28
PASS=000000
expect <<EOF
spawn ssh rootr@$IP
expect {
  "yes/no" { send "yes\r";exp_continue }
  "password" { send "$PASS\r" }
}
interact
EOF
  • 2、生成10个随机数保存于数组中,并找出其最大值和最小值
[root@localhost ~]# cat Random_max_min.sh 
#!/bin/bash
array=[]
Max=0
Min=100
for i in {1..10};do
  array[$i]=`echo $[$RANDOM%100]`
  echo  ${array[$i]}
  if [ ${array[$i]} -gt $Max  ];then 
    Max=${array[$i]};
  fi
  if [ ${array[$i]} -lt $Min  ];then
    Min=${array[$i]};
  fi
done
echo Max $Max
echo Min $Min
[root@localhost ~]# ./Random_max_min.sh 
53
10
67
36
6
98
67
15
69
23
Max 98
Min 6
  • 3、输入若干个数值存入数组中,采用冒泡算法进行升序或降序排序
[root@localhost ~]# cat bubbule.sh 
#!/bin/bash
array=( 78 50 74 12 85 2 11 10 14 83 )
num=${#array[*]}
echo "数组为:" ${array[*]}
for ((i=0;i<$num;i++));do
	for ((j=0;j<$num-1;j++));do
		if [ ${array[$i]} -lt ${array[$i+1]} ];then
			x=${array[$i]}
			array[$i]=${array[$i+1]}
			array[$i+1]=$x
		fi
	done
done
echo "排序后为:" ${array[*]}

[root@localhost ~]# ./bubbule.sh 
数组为: 78 50 74 12 85 2 11 10 14 83
排序后为: 85 83 78 74 50 14 12 11 10 2
  • 4、总结查看系统负载的几种命令,总结top命令的指标大概什么含义(不要求全部写出来)

linux下查看负载的主要命令有:top, uptime,w,vmstat

top命令指标:

第一行:系统时间,当前登录用户,负载均衡

第二行:进程的相关信息

第三行:%Cpu:CPU的状态信息

第四行:MiB Mem:内存状态信息

第五行:MiB Swap:swap交换分区状态信息

 

PID — 进程id
USER — 进程所有者
PR — 进程优先级
NI — nice值。负值表示高优先级,正值表示低优先级
VIRT — 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
RES — 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
SHR — 共享内存大小,单位kb
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!"

for实现:

[root@localhost ~]# cat for_ping.sh 
#!/bin/bash
IP=192.168.0.
for i in {1..254};do
	if `ping -c 1 -W 1 $IP$i` > /dev/null;then
		echo "$IP$i Successed!"
	else
	echo "$IP$i fail!"
fi
done

while实现:

[root@localhost ~]# cat while_ping.sh 
#!/bin/bash
IP=192.168.0.
declare -i Host=1
while [ $Host -le 254 ];do
	`ping -c 1 -W 1 $IP$Host` > /dev/null
	if [ $? -eq 0 ];then
	echo "$IP$Host Successed!"
	else
		echo "$IP$Host fail!"
	fi
	let Host++
done

  

  • 6、每周的工作日1:30,将/etc备份至/backup目录中,保存的文件名称格式 为“etcbak-yyyy-mm-dd-HH.tar.xz”,其中日期是前一天的时间
    [root@localhost ~]# crontab -l
    30 13 * * 1-5 tar -Jcvf /backup/etcbak-`date -d -1day +%F-%H`.tar.xz /etc/
    

      

posted @ 2022-01-16 16:48  比奇堡的朋友  阅读(39)  评论(0)    收藏  举报