Linux主机上的用户信息传递(查询用户(w,who,last,lastlog),用户对谈(write,mesg,wall),用户邮箱mail)

news2025/1/19 19:43:27

文章目录

  • Linux主机上的用户信息传递
    • 查询用户:w、who、last、lastlog
    • 用户对谈:write、mesg、wall
    • 用户邮箱:mail
      • 使用案例
    • 给自己的QQ邮箱发送一封邮件
      • ①获取授权码
      • ②使用mailx发送邮件
      • ③测试是否可以发送邮件

Linux主机上的用户信息传递

想过吗如何针对系统上面的用户进行查询呢?想像有几个状态,如过你在LInux上面操作时,刚好有其他用户也登录主机,你想要跟他交谈,该如何是好呢?你想要知道某个账号的相关信息,该如何查看呢?

查询用户:w、who、last、lastlog

现在如何知道目前已经登录在系统上面的用户有几个呢?可以通过w或who来查询

[root@localhost ~]# w
 20:56:23 up 43 min,  4 users,  load average: 0.12, 0.10, 0.06
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    192.168.100.1    20:12    7.00s  0.05s  0.00s w
root     pts/1    192.168.100.1    20:12   43:27   4.77s  4.76s top
pro1     pts/2    192.168.100.1    20:26   30:20   0.01s  0.01s -bash
pro1     pts/3    192.168.100.1    20:26   30:20   3.37s  3.37s top

# 第一列:用户名:显示当前登录用户的用户名,通常是登录系统时所使用的用户名。
# 第二列:终端号:显示登录用户所使用的终端设备号,通常是tty或pts。
# 第三列:远程IP地址:如果是远程登录,则显示远程IP地址;如果是本地登录,则显示“:0”。
# 第四列:登录时间:显示登录时间,包括日期和具体时间。
# 第五列:IDLE:表示CPU空闲时间,即CPU没有在执行任何任务的时间。
# 第六列:JCPU:表示任务在CPU上运行的总时间,包括用户态和内核态。
# 第七列:PCPU:表示任务在CPU上使用的时间百分比,包括用户态和内核态。
# 第八列:运行的命令:如果登录用户正在运行命令,则会显示该命令的名称和参数。

这个例子中

第一行:当前时间是20.:56:23,系统已经运行了43分钟,目前有4个用户(user)登录到系统中,系统负载情况位0.12,0.10,0.06

第二行:各个选项的说明

第三行:用户root,终端pts/0,远程IP地址为192.168.100.1 ,登录时间为20:12,CPU空闲时间为7秒,任务在CPU上运行的总时间为0.05秒,任务在CPU上使用的时间百分比0.00秒,当前未运行任何命令。(后面的-bash,代表当前在运行一个bash shell进程。)

第四行:同第三行意思相同,自行带入数据

[root@localhost ~]# who
root     pts/0        2023-04-14 20:12 (192.168.100.1)
root     pts/1        2023-04-14 20:12 (192.168.100.1)
pro1     pts/2        2023-04-14 21:05 (192.168.100.1)
pro1     pts/3        2023-04-14 21:05 (192.168.100.1)

# 第一列:登录用户名:显示当前登录到系统中的用户名。
# 第二列:终端设备:显示当前用户登录所使用的终端设备,如tty1、pts/0等。
# 第三列:登录时间:显示当前用户登录系统的时间,格式为月日(mm-dd)和时分(hh:mm)。
# 第四列:远程IP地址:如果当前用户是通过网络登录到系统中的,who命令会显示远程IP地址。

另外,如果你想要知道每个账号最近登录的时间,则可以使用lastlog这个命令,lastlog会去读取/var/log/lastlog文件,并将数据输出如下

[root@localhost ~]# lastlog
用户名           端口     来自             最后登陆时间
root             pts/1    192.168.100.1    五 414 20:12:56 +0800 2023
bin                                        **从未登录过**
daemon                                     **从未登录过**
adm                                        **从未登录过**
lp                                         **从未登录过**
sync                                       **从未登录过**
shutdown                                   **从未登录过**
halt                                       **从未登录过**
mail                                       **从未登录过**
operator                                   **从未登录过**
games                                      **从未登录过**
ftp                                        **从未登录过**
nobody                                     **从未登录过**
systemd-network                            **从未登录过**
dbus                                       **从未登录过**
polkitd                                    **从未登录过**
sshd                                       **从未登录过**
postfix                                    **从未登录过**
chrony                                     **从未登录过**
zhw              pts/0                     五 414 20:21:16 +0800 2023
csq                                        **从未登录过**
pro1             pts/3    192.168.100.1    五 414 21:05:26 +0800 2023
pro2             pts/1    192.168.100.1    三 412 17:37:18 +0800 2023
pro3                                       **从未登录过**
myuser1          pts/0                     三 412 14:28:54 +0800 2023
myuser2                                    **从未登录过**
myuser3                                    **从未登录过**
myuser4          pts/0                     三 412 20:40:49 +0800 2023

这样就能够知道每个账号最近登录时间

用户对谈:write、mesg、wall

那么我是否能够和系统上面的用户聊天呢?可以的,利用write这个命令,可以直接将信息传给接收者。

例如可以这样做,加入目前root和pro1俩人在线,我们使用root跟zhw讲话可以这样做:

write <使用者账号>  [使用者所在终端界面]
[root@localhost ~]# who
root     pts/0        2023-04-15 18:00 (192.168.100.1)
zhw      pts/2        2023-04-15 18:02 (192.168.100.1)
[root@localhost ~]# write zhw pts/2
zhw
nihao           <== 这两行是root写的信息
# 结束时,请按下ctrl + D 结束输入,此时在zhw用户的终端中就会显示
[zhw@localhost ~]$ 
Message from root@localhost.localdomain on pts/0 at 18:08 ...
zhw
nihao
EOF

立刻会有信息发给zhw,不过当时zhw正在编写文件或者查数据。你发消息就会立刻中断zhw原本的任务。所以,如果zhw这个用户不想要接受任何消息,直接执行这个操作

[zhw@localhost ~]$ mesg n
[zhw@localhost ~]$ mesg
is n

不过,这个mesg的功能对root传送来的信息没有阻止能力,所以如果是root传送信息,zhw还是得要收下。但是如果root的mesg是n的,那么zhw写给root的信息就会变成这样

[zhw@localhost ~]$ write root     # 这里是zhw用户
write: you have write permission turned off

如果想要启用的话,再次执行【mesg y】就好。想要知道目前mesg状态,直接执行【mesg】即可。相对于write是仅针对一个用户来发送【短信】,我们还可以【对所有系统上面的用户发送短信(广播)】,使用wall即可,它的语法也是很简单的。

[root@localhost ~]# wall "i am root , hi everyone"

然后你就会发现所有人都会收到这个短信,连自己都能看到

用户邮箱:mail

使用wall、write毕竟要等到用户在线才能够进行,有没有其他方式来联络呢?我们可以用mailbox来给用户发送邮件,每个用户上面都有个mailbox,可以寄、收maillbox内的邮件。一般来说,mailbox都会放置在/var/spool/mail里面,一个账号一个mailbox(文件),举例来说,我的zhw用户就具有/var/spool/mail/zhw这个mailbox。

那么如何寄邮件呢?直接使用mail这个命令就行了。这个命令的用法很简单,直接执行【mail -s “邮件标题” username@localhost】即可。一般来说,如果寄给本机上面的用户,基本连【@localhost】都不用写。举例来说,我以root寄信给zhw用户,邮件标题是【hello,zhw nice to meet you】则:

# 如果没有mail这条命令就需要安装
[root@localhost ~]# yum install -y mailx   
[root@localhost ~]# mail -s "hello,zhw nice to meet you" zhw   # 安装完毕就可以使用这条命令了
ni hao zhw 
nice to meet you
.                 # 这里很重要,结束时,最后一行输入小数点.就好了
EOT 
[root@localhost ~]#     # 退出到了命令行界面了

这样就已经寄出一封信给zhw这个用户了。或许你会觉得mail这个程序不好用,因为在邮件编写的过程中,如果写错字而按回车进入了下一行,前一行的数据很难删除,就很难办了。其实我们可以使用数据流重定向,利用 【<】就可以达到替换键盘输入的要求了,也就是是说可以先把信中的内容编好,如何再以mail -s “hello,zhw nice to meet you” zhw < filename 来传输文件内容即可

[root@localhost ~]# mail -s "hello,zhw nice to meet you" zhw  < givezhwmail.txt 

使用案例

将你的家目录下的环境变量文件(~/.bashrc)寄给自己

[zhw@localhost ~]$ mail -s ".bashrc file give root" root < ~/.bashrc

通过管道符命令直接将ls -al ~ 的内容传给root

[zhw@localhost ~]$ ls -al ~ | mail -s "my homefile give root" root

上面说到如何【发送邮件】,那么如何接收邮件呢?同样使用mail。假设我以zhw的身份登录主机,输入mail后会,会显示什么内容呢?

[zhw@localhost ~]$ mail
Heirloom Mail version 12.5 7/5/10.  Type ? for help.
"/var/spool/mail/zhw": 4 messages 4 new
>N  1 root                  Sat Apr 15 19:30  19/646   "hello,zhw nice to meet you"
&       <==这里可以输入很多命令,如果要查看,输入?即可

输入mail之后,我们可以看到我有一封邮件,这封邮件的前面那个 > 代表目前处理的邮件,而在大与附后的右边那个N 代表该封哟见尚未度过。如果我想知道mail内部的命令有哪些,可以在 & 后面输入【?】就可以看到如下画面

& ?
               mail commands
type <message list>             type messages
next                            goto and type next message
from <message list>             give head lines of messages
headers                         print out active message headers
delete <message list>           delete messages
undelete <message list>         undelete messages
save <message list> folder      append messages to folder and mark as saved
copy <message list> folder      append messages to folder without marking them
write <message list> file       append message texts to file, save attachments
preserve <message list>         keep incoming messages in mailbox even if saved
Reply <message list>            reply to message senders
reply <message list>            reply to message senders and all recipients
mail addresses                  mail to specific recipients
file folder                     change to another folder
quit                            quit and apply changes to folder
xit                             quit and discard changes made to folder
!                               shell escape
cd <directory>                  chdir to directory or home if none given
list                            list names of all available commands

指的是每封邮件的左边那个数字,而几个比较常见的命令是:

命令意义
h列出邮件标头,如果要查看40封邮件左右的邮件标头,可以输入【h 40】
d删除后续接的邮件号码,删除单封是【d10】,删除20~40封则【d20-40】。不过操作要生效的话,需要配合q命令才行(下面会说明)
s将邮件储存为文件。例如我要将第一封邮件的内容存储为文件可以这样做:【s 1 ~/mail.file】
x输入x或者输入exit都可以,这个是【不做任何操作退出mail程序】的意思。不论你刚刚删除了什么邮件或读过什么,使用exit会直接退出mail,所以你做出的删除或者阅读工作都会无效。
q相对于exit是不操作退出,q则会实际进行你刚刚所执行的任何操作(尤其是删除)

给自己的QQ邮箱发送一封邮件

此内容参考至CSDN滨河四季博主

①获取授权码

进入QQ邮箱点击设置

image-20230415205821885

点击账户

image-20230415205918003

往下滑找到 POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务

开启服务

image-20230415210442458

可能会弹出一个绑定手机号的先绑定手机号

image-20230415210527719

绑定成功后会出现授权码

image-20230415210927897

保存完毕关闭页面

②使用mailx发送邮件

  1. 安装mailx
yum install -y mailx
  1. 编辑mailx配置文件
[root@localhost ~]# vi /etc/mail.rc

在文件末尾添加以下配置项:

set from=123@qq.com
set smtp=smtp.qq.com
set smtp-auth-user=123@qq.com
set smtp-auth-password=[这里填授权码]
set smtp-auth=login

解释

  1. set from=123@qq.com:
    set from是用于设置邮件的发件人地址。在这里,123@qq.com是邮件的发件人地址。

  2. set smtp=smtp.qq.com:
    set smtp是用于设置SMTP服务器的地址。在这里,smtp.qq.com是QQ邮箱的SMTP服务器地址。

  3. set smtp-auth-user=123@qq.com:
    set smtp-auth-user是用于设置SMTP服务器需要验证的用户名。在这里,123@qq.com是QQ邮箱的用户名。

  4. set smtp-auth-password=[这里填的是授权码]
    set smtp-auth-password是用于设置SMTP服务器需要验证的密码。

  5. set smtp-auth=login:
    set smtp-auth是用于设置SMTP服务器使用的身份验证方式。在这里,使用登录认证的方式进行身份验证,即Auth Login。SMTP服务器会要求客户端提供用户名和密码,然后验证这些凭据是否正确。如果验证成功,就允许客户端发送邮件;否则,就拒绝客户端的请求。使用登录认证的方式进行身份验证,可以使SMTP服务器在传输过程中对身份信息进行加密,提高了安全性。

③测试是否可以发送邮件

# -v 是显示发送过程,发送过程中出错可以看到
[root@localhost ~]# mail -v  -s "邮件主题" 123@qq.com  < mailfile.txt 
Resolving host smtp.qq.com . . . done.
Connecting to 109.244.198.105:smtp . . . connected.
220 newxmesmtplogicsvrsza12-0.qq.com XMail Esmtp QQ Mail Server.
>>> EHLO localhost
250-newxmesmtplogicsvrsza12-0.qq.com
250-PIPELINING
250-SIZE 73400320
250-STARTTLS
250-AUTH LOGIN PLAIN XOAUTH XOAUTH2
250-AUTH=LOGIN
250-MAILCOMPRESS
250 8BITMIME
>>> AUTH LOGIN
334 VXNlcm5hbWU6
>>> MjAzMzcxNzYxN0BxcS5jb20=
334 UGFzc3dvcmQ6
>>> a2NwdnV6eGZueXZtaGJoYw==
235 Authentication successful
>>> MAIL FROM:<123@qq.com>
250 OK
>>> RCPT TO:<123@qq.com>
250 OK
>>> DATA
354 End data with <CR><LF>.<CR><LF>.
>>> .
250 OK: queued as.
>>> QUIT
221 Bye.

发送成功了

image-20230415214159719

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/414749.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

阿里版 ChatGPT 突然上线!

转自:纯洁的微笑 其实早本月初&#xff0c;就传出过不少阿里要推出类ChatGPT的消息。 前几天率先流出的天猫精灵“鸟鸟分鸟”脱口秀版GPT&#xff0c;就是基于大模型的“压缩版”&#xff0c;已经以其惊艳表现吸引了众目光。 如今“原版大菜”上桌&#xff0c;自然一点即着&a…

PHP反序列化魔术方法详细解析及实例公私有属性对比

目录 一、魔术方法利用点分析 <__construct&__destruct> <__toString> <__call> <__get> <__set> <__sleep> <__wakeup> <__isset> <__unset> <__invoke> <总结> 二、对象变量属性及序列化…

Pandas 常用按照查询条件筛选数据

文章目录1. 筛选指定的列2. 按照条件筛选3.1 单条件筛选3.2 多条件组合筛选创建一个DataFrame import pandas as pd data {name:[张三, 李四, 王五, 赵六],age:[20, 21, 22, 23], gender: [0, 1, 1, 1], stature: [165, 189, 178, 160], year: [2000, 2002, 2003, 1993]} df …

Servlet教程

在JavaEE平台上&#xff0c;处理TCP连接&#xff0c;解析HTTP协议这些底层工作统统扔给现成的Web服务器去做&#xff0c;我们只需要把自己的应用程序跑在Web服务器上。为了实现这一目的&#xff0c;JavaEE提供了Servlet API&#xff0c;我们使用Servlet API编写自己的Servlet来…

JavaWeb开发 —— 前端工程化

目录 一、前后端分离开发 二、YApi 三、前端工程化 1. 环境准备&#xff1a;vue-cli 2. Vue项目创建 四、Vue项目开发流程 一、前后端分离开发 ① 最早的前端开发就是实现页面&#xff0c;顶多再写写JS让页面可以有交互的特效。属于前后端未分离的时代。 早期前后端混合开…

Amazon 中国区配置 PingIdentity 身份集成实现 Redshift 数据库群集单点登录

无疑使用单点登录 (SSO)访问组织中的多种应用程序能够提升用户体验 。 如果您负责为 Amazon Redshift 启用 SSO&#xff0c;则可以使用 ADFS、PingIdentity、Okta、Azure AD 或其他基于 SAML 浏览器的身份提供程序设置 SSO 身份验证。 这篇文章向您展示了如何将 PingOne 设置为…

js中 = 等号赋值的问题,Js中对象的引用问题,深浅拷贝

js "" 赋值符号 在js中 “”对于基本数据类型是赋值符号&#xff0c;比较&#xff08; 或 &#xff09;的时候是值&#xff1b;对于引用数据类型-对象来说 是地址引用&#xff0c;比较的时候是比较的地址。 基本数据类型和引用数据类型的比较 let a 3; let b a;c…

Go是一门面向对象编程语言吗

本文首发自「慕课网」&#xff0c;想了解更多IT干货内容&#xff0c;程序员圈内热闻&#xff0c;欢迎关注"慕课网"&#xff01; 作者&#xff1a;tonybai|慕课网讲师 Go语言已经开源13年了&#xff0c;在近期TIOBE发布的2023年3月份的编程语言排行榜中&#xff0c;…

Go面向对象

前言 Go也有面向对象 面向对象引入: 用面向对象好啊 结构体定义 GO中的结构体和其他语言中的class是同一个等级的 这个就懒得写了 , 直接贴一个 内存分析 当实例化一个结构体的时候,分配一份内存空间. 结构体实例的创建 package main import "fmt" type Te…

计组第一章——计算机组成的基本认识

计算机——> 数值计算——> 处理电信号——> 基本单元&#xff08;逻辑元件&#xff09; 电子管——> 晶体管——>中小规模集成电路 ——>大规模&#xff0c;超大规模集成电路 机器字长&#xff1a;计算机一次整数运算所能处理的二进制位数 解析存储器中的程…

Vue——组件 v-model

目录 ​ v-model 的参数​ 多个 v-model 绑定​ 处理 v-model 修饰符​ v-model 可以在组件上使用以实现双向绑定。 首先让我们回忆一下 v-model 在原生元素上的用法&#xff1a; <input v-model"searchText" />在代码背后&#xff0c;模板编译器会对 v-…

工程日记的感悟

我个人很喜欢工程日记&#xff0c;好像一片自己一亩三分地一样&#xff0c;自己想弄些啥&#xff0c;就弄些啥。 人需要这份自由&#xff0c;需要这份能动性&#xff0c;因为人是创造者。 在《从小工到专家》的书中所要求的条目之中&#xff0c;有一条&#xff0c;就是工程日志…

最详细的Ubuntu服务器搭建Stable-Diffusion教程(无显卡,仅用CPU)

1. 首先安装基本工具 # 安装python环境 sudo apt install wget git若已经安装过请忽略 2. 安装miniconda&#xff08;也可以自己下载python&#xff09; 下载最新的安装包 wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh执行安装 ./Minicon…

NumPy 秘籍中文第二版:十二、使用 NumPy 进行探索性和预测性数据分析

原文&#xff1a;NumPy Cookbook - Second Edition 协议&#xff1a;CC BY-NC-SA 4.0 译者&#xff1a;飞龙 在本章中&#xff0c;我们涵盖以下秘籍&#xff1a; 探索气压探索日常气压范围研究年度气压平均值分析最大可见度用自回归模型预测气压使用移动平均模型预测气压研究年…

HTML svg 之<path>使用

<path> 元素用于定义一个路径。 一、命令 下面的命令可用于路径数据&#xff1a; 命令字母示意描述(小写表示相对于上个坐标的位移,相对路径)M(m) x ymoveto移动到(x,y)L(l) x ylineto画一条直线到(x,y)H(h) xhorizontal lineto水平画一条直线到 Xv(v) yvertical linet…

CVE漏洞复现-CVE-2022-22965-Spring-RCE漏洞

CVE-2022-22965-Spring-RCE漏洞 漏洞概况与影响 Spring framework 是Spring 里面的一个基础开源框架&#xff0c;其目的是用于简化 Java 企业级应用的开发难度和开发周期,2022年3月31日&#xff0c;VMware Tanzu发布漏洞报告&#xff0c;Spring Framework存在远程代码执行漏洞…

JAVAWeb05-Tomcat

1. Tomcat 1.1 概述 1.1.1 官方文档 地址: https://tomcat.apache.org/tomcat-8.0-doc/ 1.1.2 WEB 开发介绍 WEB&#xff0c;在英语中 web 表示网/网络资源(页面,图片,css,js)意思&#xff0c;它用于表示 WEB 服务器(主机)供浏览器访问的资源WEB 服务器(主机)上供外界访问…

终于见识到 Python 的天花板。。

Python 有很多衍生方向&#xff0c;比如 web 开发、网络爬虫、数据分析、数据挖掘、机器学习、人工智能等等&#xff0c;就业范围是很广的&#xff0c;Python 相较于别的编程语言对小白入门还是很友好的&#xff0c; Python 入门推荐这份学习资料&#xff1a;PYTHON全案例实践…

【基础知识】PCB布局设计入门步骤

准备是成功的基石&#xff0c;在PCB设计中也是如此。改进和增长将伴随经验&#xff0c;首先做好准备能够充分利用经验获得成功。为了帮助你做好准备&#xff0c;下面分享一些基本的PCB布局设计步骤。 从良好的原材料入手是您PCB布局设计的第一步 无论打算执行什么任务&#xff…

Vue3——一文入门Vue3

Vue3的优势 1. 性能的提升 打包大小减少41% 初次渲染快55%&#xff0c;更新渲染快133% 内存减少54% … 2. 源码的升级 使用Proxy代替defineProperty实现响应式 重写虚拟DOM的实现和Tree-Shaking … 3. 拥抱TypeScript Vue3可以更好的支持TypeScript 4. 新的特性 1.C…