我想使用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;
到目前为止,我认为shell脚本看起来像这样,使用正确的sed
命令:
# !/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
答案 0 :(得分:0)
反复解析相同的字符串是浪费和令人沮丧的。如果您使用的工具可以产生机器可读输出,但如果其输出格式相当静态,那么最好是
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内部使用而保留的。
答案 1 :(得分:0)
好的,所以我无法得到你发布的作品,但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作业运行时,串行监视器只显示换行符。有什么想法吗?