linux作业--第六周
2024-10-20 01:28:28
1、编写脚本实现登陆远程主机。(使用expect和shell脚本两种形式)。
#expect方式
yum -y install expect
vim remote_ssh.sh
#!/usr/bin/expect
set ip [lindex $argv 0]
set password [lindex $argv 1]
set user [lindex $argv 2]
spawn ssh $user@$ip
expect {
"yes/no" { send "yes\n";exp_continue }
"password" { send "$password\n" }
}
interact
[root@centos8 ~]#chmod +x ssh-remote.sh
[root@centos8 ~]# ./ssh-remote.sh 10.0.0.18 root P@SSW0RD
#shell方式
[root@centos8 ~]#yum -y install sshpass
[root@centos8 ~]# vim ssh-remote.sh
#!/bin/bash
IP=$1
USER=$2
PASSWORD=$3
sshpass -p $PASSWORD ssh -o StrictHostKeyChecking=no $user@$ip
[root@centos8 ~]#chmod +x ssh-remote.sh
[root@centos8 ~]#./ssh-remote.sh 10.0.0.18 root P@SSW0RD
2、生成10个随机数保存于数组中,并找出其最大值和最小值
vim max_min.sh
#!/bin/bash
declare -i min max
declare -a nums
for ((i=0;i<10;i++));do
nums[$i]=$RANDOM
[ $i -eq 0 ] && min=${nums[$i]} && max=${nums[$i]}&& continue
[ ${nums[$i]} -gt $max ] && max=${nums[$i]}
[ ${nums[$i]} -lt $min ] && min=${nums[$i]}
done
echo “Numbers are ${nums[*]}”
echo Max is $max
echo Min is $min
3、输入若干个数值存入数组中,采用冒泡算法进行升序或降序排序
vim argssum.sh
read -p "请输入数值个数:" COUNT
declare -a nums
for ((i=0;i<$COUNT;i++));do
num[$i]=$RANDOM
done
echo "${num[@]}"
declare -i n=$COUNT
for (( i=0; i<n-1; i++ ));do
for (( j=0; j<n-1-i; j++ ));do
let x=$j+1
if (( ${num[$j]} < ${num[$x]} ));then
#从大到小排列
tmp=${num[$x]}
num[$x]=${num[$j]}
num[$j]=$tmp
fi
done
done
echo ${num[*]}
echo "the max integer is $num,the min integer is ${num[$((n-1))]}"
4、总结查看系统负载的几种命令,总结top命令的指标大概什么含义(不要求全部写出来)
CPU:
[root@localhost ~]#top
[root@localhost ~]#top -b -n 1 | grep Cpu | awk -F ',' '{print $4}' | awk '{print $1*10}'
997
内存:
[root@localhost ~]#free -mh |awk /Mem/'{print $3}'
#已使用内存
596M
[root@localhost ~]#free -mh |awk /Mem/'{print $2}'
#总大小
977M
硬盘:
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 200M 0 part /boot
└─sda2 8:2 0 19.8G 0 part
├─centos-root 253:0 0 15.9G 0 lvm /
├─centos-swap 253:1 0 2G 0 lvm [SWAP]
└─centos-home 253:2 0 2G 0 lvm /home
sr0 11:0 1 1024M 0 rom
[root@localhost ~]# lsblk|grep disk
#过滤出所有硬盘(disk)
sda 8:0 0 20G 0 disk
sdb 8:16 0 20G 0 disk
sdc 8:32 0 20G 0 disk
[root@localhost ~]#lsblk |grep disk|awk -F "[ G]+" '{print $4}'
20
20
20
i/o:
[root@localhost ~]#iostat -kx | grep sda| awk '{print $4}'
0.12
5、编写脚本,使用for和while分别实现192.168.0.0/24网段内,地址是否能够ping通,若ping通则输出"success!",若ping不通则输出"fail!"
[root@localhost ~]#bash for.sh
1连通性 success
2连通性 success
3连通性 fail
4连通性 fail
5连通性 fail
6连通性 fail
#!/bin/bash
for i in {1..254}
do
ping -c 3 192.168.91.$i &>/dev/null
if [ $? -eq 0 ]
then
echo "$i连通性 success"
else
echo "$i连通性 fail"
fi
done
while
#!/bin/bash
i=1
while [ $i -lt 255 ]
do
ping -c3 192.168.91.$i &>/dev/null
if [ $? -eq 0 ]
then
echo "$i连通性 success"
else
echo "$i连通性 fail"
fi
let i++
done
[root@localhost ~]#bash w.sh
1连通性 success
2连通性 success
3连通性 fail
4连通性 fail
5连通性 fail
6连通性 fail
6、每周的工作日1:30,将/etc备份至/backup目录中,保存的文件名称格式 为“etcbak-yyyy-mm-dd-HH.tar.xz”,其中日期是前一天的时间
[root@localhost ~]#cat back.sh
#!/bin/bash
name=`date -d -1day +%F-%H`
[ -e /backup ]
if [ $? -eq 0 ]
then cp -a /etc/* /backup/etcbak$name &>/dev/null
else
mkdir /backup
cp -a /etc/* /backup/etcbak$name &>/dev/null
fi
[root@localhost ~]#ln -s /data/back.sh /usr/local/bin/
[root@localhost ~]#crontab -e
30 1 * * 1-5 /usr/local/bin/back.sh
[root@localhost ~]#crontab -l
30 1 * * 1-5 /usr/local/bin/back.sh
[root@localhost ~]#bash back.sh
最新文章
- DX12龙书第6章习题
- 浩瀚技术团队... 安卓智能POS移动PDA开单器 开单器 进销存系统 进销存系统
- The listener supports no services解决一例
- ruby的hash学习笔记例: 将字符串文本中的单词存放在map中
- Http协议Get方式获取图片
- 【转载】安装和使用花生壳(linux)
- C函数指针简单用例
- (简单) HDU 2612 Find a way,BFS。
- 前端基础之初识 HTML
- javascript中toString和valueOf方法的区别
- 使用 webpack 打包 font 字体的问题
- ArrayList与Vector的区别
- 51nod 1630(定积分 + 期望)
- Struts2中 Action class not found 问题
- Mac下搭建react及bable
- Tomcat开启JMX监控 visualvm
- 第二节 JavaScript基础
- IntelliJ IDEA安装主题详细步骤
- Three ways to make your WPF images pop out on MouseOver
- 【AndroidManifest.xml详解】Manifest属性之sharedUserId、sharedUserLabel