优化vncscreenshot脚本

时间:2018-04-30 00:47:22

标签: bash process debian vnc

美好的一天,  我在debian 7环境中使用vncsnapshot http://vncsnapshot.sourceforge.net/来捕获工作站的屏幕截图,以监控员工的桌面活动。这会通过nmap捕获屏幕截图并将其保存到我通过内部网页访问的所需位置。

我有这样的脚本。 x.x.x.x是捕获所有打开的工作站的网络的ip范围。

root     32696  0.0  0.0   4368     0 ?        S    Feb23   0:00 /bin/bash /var/www/vncsnapshot/.scripts/.account.sh
root     32708  0.0  0.0  14580     4 ?        S    Feb23   0:00 nmap -v -p5900,5901,5902 --script=vnc-screenshot-mb
root     32717  0.0  0.0   1952    60 ?        S    Apr10   0:00 sh -c vncsnapshot -cursor -quality 30 x.x.x.x 
root     32719  0.0  0.1  11480  4892 ?        S    Apr10   0:00 vncsnapshot -cursor -quality 30 30 x.x.x.x /var/w
root     32720  0.0  0.0   1952    60 ?        S    Apr25   0:00 sh -c vncsnapshot -cursor -quality 30 30 x.x.x.x 
root     32722  0.0  0.0   1952     4 ?        Ss   Feb09   0:00 /bin/sh -c /var/www/vncsnapshot/.scripts/.account.sh
root     32723  0.0  0.0   3796   140 ?        S    Apr25   0:00 vncsnapshot -cursor -quality 30 30 x.x.x.x /var/w
root     32730  0.0  0.0   1952     4 ?        Ss   Feb08   0:00 /bin/sh -c /var/www/vncsnapshot/.scripts/.account
root     32734  0.0  0.0   4364     0 ?        S    Feb08   0:00 /bin/bash /var/www/vncsnapshot/.scripts/.account.
root     32741  0.0  0.0  13700     4 ?        S    Feb08   0:00 nmap -v -p5900 --script=vnc-screenshot-account --
root     32755  0.0  0.0   1952     4 ?        Ss   Feb08   0:00 /bin/sh -c /var/www/vncsnapshot/.scripts/.account.sh
root     32757  0.0  0.0   1952     4 ?        S    Feb07   0:00 sh -c vncsnapshot -cursor -quality 30 30 x.x.x.x 
root     32760  0.0  0.0   3796     0 ?        S    Feb07   0:00 vncsnapshot -cursor -quality 30 30 x.x.x.x /var/w
root     32762  0.0  0.0   4368     0 ?        S    Feb09   0:00 /bin/bash /var/www/vncsnapshot/.scripts/.account.sh
root     32764  0.0  0.0   4368     0 ?        S    Feb08   0:00 /bin/bash /var/www/vncsnapshot/.scripts/.account.sh

在crontab中设置每隔5分钟运行一次。

服务器因此而运行的进程太多。这是ps命令的示例

urlpatterns = [
    url(r'^activate/(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$',
    views.activate, name='activate'),
]

如何优化此设置以关闭仍在运行的非必要进程。

由于

1 个答案:

答案 0 :(得分:0)

我将流程拆分为两部分:定期扫描网络的nmap和获取先前扫描主机列表的屏幕截图的vncsnapshot。 在我看来,这样事情就更清晰了。

我没有测试此代码

#!/bin/bash

## capture the list of host with vnc port open

list=/dev/shm/list
port=5900
network=192.168.1.*

nmap -n -p${port} --open ${network} -oG - | grep 'open\/tcp' | awk '{print $2}' > ${list}

另一个脚本,使用锁定文件检查进程是否处于活动状态,以及启动抓取命令

#!/bin/bash

list=/dev/shm/list
run=/run/vncscreenshot/

mkdir -p ${run} &>/dev/null
cat ${list} |\
while read host 
  do
  lock="${run}/${host}.lock"
  test -e ${lock} && ps -p $(<${lock}) &>/dev/null && continue
  vnc-screenshot-it vnc-screenshot.quality=30 ${host} &
  echo $! > ${lock}
  done