我想使用selfspy跟踪点击、击键和鼠标移动,然后使用cron作业运行shell脚本,使用(我相信) sed拆分字符串,并通过curl将信息发送到SparkCore。有人能帮我解决这个sed部分吗?
bash命令selfstats --clicks返回以下内容:
$ selfstats --clicks
5006 keystrokes in 407 key sequences, 2791 clicks (2361 excluding scroll), 157648 mouse movements
Mouse clicks:
2298 left
0 middle
26 right
143 up
287 down在SparkCore方面,我想要的是:
clicks = 2791;
keystrokes = 5006;
mouseMovement = 157648;到目前为止,我认为带有正确的sed命令的shell脚本应该如下所示:
# !/bin/bash
CLICKS="$(selfstats --clicks | sed)"
KEYSTROKES="$(selfstats --clicks | sed)"
MOUSE_MOVEMENT="$(selfstats --clicks | sed)"
curl https://api.spark.io/v1/devices/0123456789abcdef/programname \
-d access_token=123412341234 -d clicks=$CLICKS
curl https://api.spark.io/v1/devices/0123456789abcdef/programname \
-d access_token=123412341234 -d keystrokes=$KEYSTROKES
curl https://api.spark.io/v1/devices/0123456789abcdef/programname \
-d access_token=123412341234 -d mouseMovement=$MOUSE_MOVEMENT发布于 2015-04-01 02:36:37
重复解析相同的字符串是浪费和令人沮丧的。如果您使用的工具能够产生机器可读的输出,这将是最好的,但是如果它的输出格式是合理的静态的,那么您可以这样做
selfstats --clicks |
awk '{print $1,$7, $12 }' |
while read -r keystrokes clicks mousemovement; do
:
done在Bash中,您可以
read -r keystrokes clicks mousemovement <(selfstats --clicks |
awk '{print $1,$7, $12 }')您应该选择小写的变量名,这既是为了让您的眼睛休息,也是因为大写是为shell内部使用保留的。
发布于 2015-04-02 10:36:31
好吧,我不能完全理解你发布的内容,但是awk的添加非常有帮助。shell脚本如下所示:
# !/bin/bash
activity="$(selfstats --clicks | sed '2,9d' | awk '{print $1,$7, $12 }')"
curl --silent https://api.spark.io/v1/devices/0123456789abcdef/echo \
-d access_token=123412341234 -d "args=$activity"所以,当我直接从终端运行它并检查串行监视器时,它工作得很好,给出了三个变量:5006 2791 157648,我可以在Spark Core一端拆分它。但是,当我将作业作为cron作业运行时,串行监视器只显示换行符。有什么想法吗?
https://stackoverflow.com/questions/29357702
复制相似问题