-3

我正在使用 NetScaler FreeBSD,它可以识别许多 UNIX,例如命令、grep、awk、crontab 等。

我运行以下命令来获取我们在系统上拥有的连接用户数

#> nsconmsg -g aaa_cur_ica_conn -d stats

输出(编号行):

Line1: Displaying current counter value information
Line2: NetScaler V20 Performance Data
Line3: NetScaler NS11.1: Build 63.9.nc, Date: Oct 11 2019, 06:17:35
Line4:
Line5: reltime:mili second between two records Sun Jun 28 23:12:15 2020
Line6: Index reltime     counter-value symbol-name&device-no
Line7:     1 2675410                 605 aaa_cur_ica_conn
…
…

从上面的输出 - 我只需要连接用户的数量(表示在第 7 行,第 3 列(605准确地说),以及主机名和时间(运行脚本)

现在,为了提取这个重要的第 3 列编号,即605,连同主机名和收集数据的时间 - 我编写了以下脚本:

printf '%s - %s - %s\n' "$(hostname)" "$(date '+%H:%M')" "$(nsconmsg -g aaa_cur_ica_conn -d stats | grep aaa_cur_ica_conn | awk '{print $3}')"

结果很完美,显示主机名、时间和连接用户数如下:

Hostname - 09:00 – 605

现在任何人都可以阐明我的方法:

  • 每天运行这个脚本 - 早上 5 点到下午 5 点(12 小时)?
  • 每次脚本运行时 - 在远程 Unix 共享上附加一个文件并输出?

如果是一个挑战,我很感激这可能有点......但是会感谢任何可以创造魔法的 bash 脚本向导!

提前致谢!

4

1 回答 1

0

我建议您快速浏览一下FreeBSD 手册For People New to Both FreeBSD and UNIX®,以便您熟悉操作系统和工具,以帮助您更好地实现您想要的。

例如,有一个实用程序/命令名为cron

软件实用程序 cron 是类 Unix 计算机操作系统中基于时间的作业调度程序。

例如,要在每 分钟早上 5 点到下午 5 点之间全天运行一些东西,你可以使用类似的东西:

* 05-17 * * * command

在此处尝试更多选项:https://crontab.guru/#*_05-17_*_*_*.

还有更多用于调度命令的工具,例如athttps://en.wikipedia.org/wiki/At_(command)),但您需要评估和阅读更多相关信息。

现在关于命令,您正在使用获取“连接用户数”,您可以避免grep使用awk,例如:

awk '/aaa_cur_ica_conn/ {print $3}'

如果行包含aaa_cur_ica_conn,这将仅打印第 3 列,但与之前一样,我邀请您阅读有关该主题的更多信息,以便您可以打赌更好的概述并更好地理解命令。

最后但同样重要的是,请查看此链接我如何提出一个好问题?您可以更好地格式化并详细说明您的问题,以便其他人更容易给出答案。

于 2020-06-29T17:39:04.793 回答