如何在一台虚拟机上远程访问另一台虚拟机并设置邮件报警功能

linux当中的远程控制在自动化运维中起到了很大的作用,你可以完成在一台机器上对另一台机器的操作以及监控,今天主要是用脚本来实现对远程虚拟机CPU等信息的监控。开始写脚本之前我们需要解决两个问题

问题一

如何远程连接到服务器

这里我们采用的是ssh进行连接
命令格式:

ssh -p $port $user@$ip 'cmd'  
或者 ssh -t $usr@ip 'cmd'  
 $port : ssh连接端口号  
 $user: ssh连接用户名  
 $ip:ssh连接的ip地址  
cmd:远程服务器需要执行的操作

采用命令执行过程中会让输入密码,可以采用密钥的方式省去输入密码这一步骤

在这里插入图片描述

如何设置密钥

有机器A(192.168.1.155),B(192.168.1.181)。现想A通过ssh免密码登录到B。
首先以root账户登陆为例。
1.在A机下生成公钥/私钥对。
[root@A ~]# ssh-keygen -t rsa -P ‘’
-P表示密码,-P ‘’ 就表示空密码,也可以不用-P参数,这样就要三车回车,用-P就一次回车。
命令将在/root/.ssh目录下面产生一对密钥id_rsa和id_rsa.pub。
一般采用的ssh的rsa密钥:
id_rsa 私钥
id_rsa.pub 公钥
下述命令产生不同类型的密钥
ssh-keygen -t dsa
ssh-keygen -t rsa
ssh-keygen -t rsa1

2.把A机下的/root/.ssh/id_rsa.pub 复制到B机的 /root/.ssh/authorized_keys文件里,先要在B机上创建好 /root/.ssh 这个目录,用scp复制。

[root@A ~]# scp /root/.ssh/id_rsa.pub root@192.168.1.181:/root/.ssh/authorized_keys
root@192.168.1.181’s password:
id_rsa.pub 100% 223 0.2KB/s 00:00

由于还没有免密码登录的,所以要输入一次B机的root密码。

3.authorized_keys的权限要是600!!!

[root@B ~]# chmod 600 /root/.ssh/authorized_keys

问题二 如何实现发送邮件的功能

这里使用mail实现发送邮件的功能
下载mailx
yum -y install mailx
yum -y install sendmail
下载完成以后需要配置/etc/mail.rc文件
vi /etc/mail.rc
=在配置文件中添加下面的信息=
set from=921730779@qq.com 发送端

set smtp=smtp.qq.com 固定值也可以是smtp.163.com

set smtp-auth-user=921730779@qq.com 用户的邮箱账号

set smtp-auth-password=qbwecjkddjhibfif 用户邮箱的授权码,可以在qq邮箱的设置>账号中开启

set smtp-auth=login

配置文件设置完毕就可以发送邮件了

参数说明
-b address指定密件副本的收信人地址
-c address指定副本的收信人地址
-f [file]读取指定邮件文件中的邮件
-i忽略终端发出的信息
-I使用互动模式
-n启动时禁止读取 /etc/mail.rc
-N阅读邮件时,不显示邮件的标题
-s subject指定邮件的主题
-t要发送的消息应包含带有 To:、Cc:、或 Bcc: 字段的消息头,在命令行上指定的收件人将被忽略。
-u user读取指定用户的邮件
-v执行时,显示详细的信息
-V显示版本信息并退出

发送邮件
1.标准输入录入邮件信息

直接把当前 shell 当成编辑器来用,可以输入正文,当邮件正文输入完成后,需要按 Ctrl+D 结束输入。

[root@localhost ~]# mail -s "邮件主题" 123456@qq.com
hello  # 邮件正文
world  # 邮件正文
EOT  # 按 Ctrl+D

2.管道方式

[root@localhost ~]# echo “邮件正文” | mail -s “邮件主题” 123456@qq.com

以文件 file.txt 的内容为邮件正文发送。

[root@localhost ~]# cat file.txt | mail -s “邮件主题” 123456@qq.com

3.文件重定向

以文件 file.txt 的内容为邮件正文发送。

[root@localhost ~]# mail -s “邮件主题” 123456@qq.com < file.txt

注意点

我们在用163邮箱发送邮件时如何邮件内容不合理会被163邮箱的反垃圾机制阻拦,导致邮件的发送失败,这时可以修改邮件内容或者换QQ邮箱进行发送

脚本文件

#! /bin/bash
#获取CPU等信息的函数
info_get(){
cpuUse=`top -n 1 | awk -F '[ %]+' 'NR==3 {print $3}'` | awk -F '.' "{print $2}"
mem_total=`free -m | awk -F '[ :]+' 'NR==2{print $2}'`
mem_used=`free -m | awk -F '[ :]+' 'NR==2{print $3}'`
mem_used2=`awk 'BEGIN{printf "%.0f\n",('$mem_used'/'$mem_total')*100}'`
data_name="/dev/sda1"
disk_used=`df -h | grep $data_name | awk -F '[ %]+' '{print $5}'`
}
#进行连接的函数
connect()
{
ssh -t root@$192.168.0.195
}
#发送邮件的函数
send(){
connect
info_get
#设置判断语句当Cpu等信息达到所监控的值时发送信息
if [[ $cpuUse > 0.6 ]];then
echo "警告,你现在的CPU已经使用$cpuUse,请赶快处理" | mail -s "警告" 921730779@qq.com 
elif [[ $mem_used2 > 10 ]];then
echo "警告,你所监控的内存已经使用$mem_used2,请赶快处理" | mail -s "警告" 921730779@qq.com 

elif [[ disk_used > 80 ]];then
echo  "警告,你所监控的磁盘已经使用$disk_used,请赶快处理" | mail -s "警告" 921730779@qq.com 
else
echo "一切正常"
fi
}
send

总结

这个脚本文件是从一台主机上运行脚本文件来实现对远程liunx机器的监控,也可以用过在远程运行脚本文件实现监控,具体方法还在研究

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值