以服务于中国广大创业者为己任,立志于做最好的创业网站。

标签云创业博客联系我们

导航菜单

西瓜视频uid在哪看,西瓜视频怎么查看自己的ID

  

  利用数据库查询轻松获取系统信息。   

  

     

  

  Linux操作系统   

  

  提供了许多命令来帮助用户收集主机操作系统的信息:列出文件或目录的属性信息;查询安装的软件包、执行的命令和启动时启动的服务;或者了解系统的硬件。   

  

  每个命令都使用自己的输出格式来列出系统信息。你需要使用。   

  

  grep '、' sed '和' awk '等工具过滤命令输出的结果,以便找到特定的信息。此外,很多这样的信息会频繁变化,导致系统状态的改变。   

  

  将所有信息格式化为数据库的SQL查询输出以供查看将是非常有益的。想象一下,您可以像一个名称相似的SQL数据库表一样进行查询。   

  

  “ps”和“rpm”命令的输出。   

  

  好在有一个工具刚好实现了这个功能,功能也更多:Osquery是一个开源的“SQL驱动的操作系统插装、监控和分析框架”。   

  

  许多处理安全性、DevOps、合规性和仓库管理的应用程序(仅举几个例子)都依赖于Osquery内部提供的核心功能。   

  

  # # # #安装Osquery。   

  

  Osquery适用于Linux、macOS、Windows和FreeBSD。请按照指南安装最新版本的操作系统。(在下面的示例中,我将使用4.7.0。   

  

  版本。)   

  

  确保Osquery在安装后可以工作:   

  

  $ rpm-QA | grep osqueryosquery-4 . 7 . 0-1 . Linux . x86 _ 64 $ $ osqueryi-versionosqueryi 4 . 7 . 0版$   

  

  ### Osquery组件。   

  

  Osquery有两个主要组件:   

  

  * `osqueri `是一个交互式SQL查询控制台,可以独立运行,不需要超级用户权限(除非要查询的表需要访问权限)。   

  

  * `osqueryd `就像一个安装在主机上的监控守护程序,它可以定期调度查询操作并从底层架构收集信息。   

  

  您可以在不运行osqueryd的情况下执行osqueri。另一个工具osqueryctl '控制守护进程的启动和停止,并检查其状态。   

  

  $ rpm-QL OS query-4 . 8 . 0-1 . Linux . x86 _ 64 | grep bin/usr/bin/osqueryctl/usr/bin/osqueryd/usr/bin/osqueryi $   

  

  # # #使用osqueryi交互式命令提示符。   

  

  您与Osquery的交互非常类似于使用SQL数据库。实际上,osqueryi是SQList shell。   

  

  的修改版本。执行` Osqueryi '命令进入交互命令提示符,可以执行osquery的命令,通常以`。`:   

  

  $ osqueryiUsing使用虚拟数据库。需要帮助,请键入。帮助osquery   

  

  要退出交互式命令提示符,请执行`。退出`命令返回操作系统的命令提示符:   

  

  osqueryosquery。退出$   

  

  # # # #查找可用的表格。   

  

  如前所述,Osquery像SQL查询一样输出数据,数据库中的信息通常存储在表中。但是,在不知道这些表的名称的情况下,如何查询它们呢?你可以跑。   

  

  那个`。tables命令列出了所有可以查询的表。如果您是长期的Linux用户或系统管理员。   

  

  ,会非常熟悉表名,因为您已经使用操作系统命令获得了相同的信息:   

  

  osquery。tables=acpi _ tables=appar mor _ events=appar mor _ profiles=apt _ sources=ARP _ cache=user _ ssh _ keys=users=yara=yara _ events=ycloud _ instance _ metadata=yum _ sources soquery   

  

  # # # #检查每个表的模式。   

  

  一旦知道了表名,就可以查看每个表提供的信息。因为   

  

  “ps”命令通常用于获取过程信息。以流程为例。执行`。schema命令,并添加表名以查看存储在表中的信息。如果想验证命令返回的结果,可以快速执行` ps。   

  

  -ef `或` ps aux `,将命令的输出与表中的内容进行比较:   

  

  osquery。schema processes create TABLE processes(` PID ` BIGINT,` name` TEXT,` path` TEXT,` cmdline` TEXT,` state` TEXT,` cwd` TEXT,` root` TEX   

T, `uid` BIGINT, `gid` BIGINT, `euid` BIGINT, `egid` BIGINT, `suid` BIGINT, `sgid` BIGINT, `on_disk` INTEGER, `wired_size` BIGINT, `resident_size` BIGINT, `total_size` BIGINT, `user_time` BIGINT, `system_time` BIGINT, `disk_bytes_read` BIGINT, `disk_bytes_written` BIGINT, `start_time` BIGINT, `parent` BIGINT, `pgroup` BIGINT, `threads` INTEGER, `nice` INTEGER, `is_elevated_token` INTEGER HIDDEN, `elapsed_time` BIGINT HIDDEN, `handle_count` BIGINT HIDDEN, `percent_processor_time` BIGINT HIDDEN, `upid` BIGINT HIDDEN, `uppid` BIGINT HIDDEN, `cpu_type` INTEGER HIDDEN, `cpu_subtype` INTEGER HIDDEN, `phys_footprint` BIGINT HIDDEN, PRIMARY KEY (`pid`)) WITHOUT ROWID;osquery>

  

要进一步确认,可以使用下面的命令查看 RPM 包的结构信息,然后与操作系统命令 `rpm -qa`和`rpm -qi`的输出比较:

  

osquery>osquery> .schema rpm_packagesCREATE TABLE rpm_packages(`name` TEXT, `version` TEXT, `release` TEXT, `source` TEXT, `size` BIGINT, `sha1` TEXT, `arch` TEXT, `epoch` INTEGER, `install_time` INTEGER, `vendor` TEXT, `package_group` TEXT, `pid_with_namespace` INTEGER HIDDEN, `mount_namespace_id` TEXT HIDDEN, PRIMARY KEY (`name`, `version`, `release`, `arch`, `epoch`, `pid_with_namespace`)) WITHOUT ROWID;osquery>

  

从 Osquery 的 表格文档获取更多信息。

  

### 使用 PRAGMA 命令

  

或许模式信息对你来说太难看懂,还有另一种途径能够以详细的表格格式打印表中的信息:`PRAGMA`命令。例如,我想通过`PRAGMA`用一种易于理解的格式查看`rpm_packages`表的信息:

  

osquery> PRAGMA table_info(rpm_packages);

  

这种表格式信息的一个好处是你可以关注想要查询的字段,查看命令提供的类型信息:

  

osquery> PRAGMA table_info(users);+-----+-------------+--------+---------+------------+----+| cid | name | type | notnull | dflt_value | pk |+-----+-------------+--------+---------+------------+----+| 0 | uid | BIGINT | 1 | | 1 || 1 | gid | BIGINT | 0 | | 0 || 2 | uid_signed | BIGINT | 0 | | 0 || 3 | gid_signed | BIGINT | 0 | | 0 || 4 | username | TEXT | 1 | | 2 || 5 | description | TEXT | 0 | | 0 || 6 | directory | TEXT | 0 | | 0 || 7 | shell | TEXT | 0 | | 0 || 8 | uuid | TEXT | 1 | | 3 |+-----+-------------+--------+---------+------------+----+osquery>

  

### 进行你的第一次查询

  

在你从表、模式、条目中获取到所有进行查询所需要的信息后,进行你的第一次 SQL 查询查看其中的信息。下面的查询返回系统中的用户和每个用户的用户 ID、组

  

ID、主目录和默认的命令行解释器。Linux 用户通过查看

  

`/etc/passwd`文件的内容并执行`grep`、`sed`、`awk`命令获取同样的信息。

  

osquery>osquery> select uid,gid,directory,shell,uuid FROM users LIMIT 7;+-----+-----+----------------+----------------+------+| uid | gid | directory | shell | uuid |+-----+-----+----------------+----------------+------+| 0 | 0 | /root | /bin/bash | || 1 | 1 | /bin | /sbin/nologin | || 2 | 2 | /sbin | /sbin/nologin | || 3 | 4 | /var/adm | /sbin/nologin | || 4 | 7 | /var/spool/lpd | /sbin/nologin | || 5 | 0 | /sbin | /bin/sync | || 6 | 0 | /sbin | /sbin/shutdown | |+-----+-----+----------------+----------------+------+osquery>

  

### 不进入交互模式的查询

  

如果你想要在不进入 `osqueri`交互模式的情况下进行查询,该怎么办?要用查询操作写命令行解释器脚本,这种方式可能十分有用。这种情况下,可以直接从

  

Bash 解释器`echo`SQL 查询,通过管道输出到`osqueri`:

  

$ echo "select uid,gid,directory,shell,uuid FROM users LIMIT 7;" | osqueryi+-----+-----+----------------+----------------+------+| uid | gid | directory | shell | uuid |+-----+-----+----------------+----------------+------+| 0 | 0 | /root | /bin/bash | || 1 | 1 | /bin | /sbin/nologin | || 2 | 2 | /sbin | /sbin/nologin | || 3 | 4 | /var/adm | /sbin/nologin | || 4 | 7 | /var/spool/lpd | /sbin/nologin | || 5 | 0 | /sbin | /bin/sync | || 6 | 0 | /sbin | /sbin/shutdown | |+-----+-----+----------------+----------------+------+$

  

### 获悉系统启动时开始的服务

  

Osquery 还可以列出系统启动时开始的所有服务。例如,可以查询 `startup_items`表获取启动时开始的前五项服务的名称、状态和路径:

  

osquery> SELECT name,type,status,path FROM startup_items LIMIT 5; name = README type = Startup Itemstatus = enabled path = /etc/rc.d/init.d/README name = anamon type = Startup Itemstatus = enabled path = /etc/rc.d/init.d/anamon name = functions type = Startup Itemstatus = enabled path = /etc/rc.d/init.d/functions name = osqueryd type = Startup Itemstatus = enabled path = /etc/rc.d/init.d/osqueryd name = AT-SPI D-Bus Bus type = Startup Itemstatus = enabled path = /usr/libexec/at-spi-bus-launcher --launch-immediatelyosquery>

  

### 查阅二进制文件的 ELF 信息

  

假如你想要弄清 `ls`二进制文件的更多细节,通常会通过`readelf -h`命令,加上`ls`命令的路径。查询 Osquery

  

的`elf_info`表你可以得到同样的信息:

  

osquery> SELECT * FROM elf_info WHERE path="/bin/ls"; class = 64 abi = sysvabi_version = 0 type = dyn machine = 62 version = 1 entry = 24064 flags = 0 path = /bin/lsosquery>

  

现在你应该初步了解如何使用 `osqueri`查询自己想要的信息。然而,这些信息保存在数量巨大的表中;我查询过的一个系统中,有 156

  

个不同的表,这个数字可能是十分惊人的:

  

$ echo ".tables" | osqueryi | wc -l156$

  

要让事情变得更容易,可以从这些表开始获取你的 Linux 系统的信息:

  

系统信息表:

  

osquery> select * from system_info;

  

系统限制信息:

  

osquery> select * from ulimit_info;

  

由各种进程打开的文件:

  

osquery> select * from process_open_files;

  

系统上开放的端口:

  

osquery> select * from listening_ports;

  

运行中的进程信息:

  

osquery> select * from processes;

  

已安装的包信息:

  

osquery> select * from rpm_packages;

  

用户登录信息:

  

osquery> select * from last;

  

系统日志信息:

  

osquery> select * from syslog_events;

  

### 了解更多

  

Osquery 是一个强大的工具,提供了许多可以用于解决各种使用案例的主机信息。你可以阅读 文档了解更多 Osquery 的信息。

  

via: https://opensource.com/article/21/6/osquery-linux

  

作者:Gaurav Kamathe选题:lujun9972译者:YungeG校对:wxy

  

本文由 LCTT原创编译,Linux中国荣誉推出