bbs.ChinaUnix.net
首页 | 微博 | 新闻 | Linux | FreeBSD | AIX | Windows | 博客 | 论坛 | 存储 | 网络 | 人才 | Wiki | 资料 | 读书 | 手册 | 下载 | 空间 | 搜索
  免费注册 | 忘记密码 | 会员登录 | 搜索 | 帮助 


原创精华帖子 用QQ管理你的系统^_^


  首页 » 论坛 » Linux论坛 »
[打印] [收藏] [本帖文本页] [推荐此主题给朋友]

用QQ管理你的系统
2005-7-24 by wwy
#########################

看过abel大哥的帖子--Shell/Web下发送MSN Message 很受启发
http://bbs.chinaunix.net/forum/24/050711/575520.html
是利用一个基于命令行的msn客户端实现的
在这里,换个角度,同样可以利用Linux下命令行QQ客户端 --- TestQQ来实现对系统的管理
管理员通过自己的QQ与服务端的QQ进行交流,服务器后台用TestQQ+expect+bash 就可以实现很多有趣的功能了

TestQQ下载地址:http://formalin14.org/blog/static.php?page=tq
还要有两个OICQ号码,并互相加为好友(一个放在服务端,一个在管理员端)
关于TestQQ的使用方法在 http://formalin14.org 有说明,
其中在配置文件config.ini 中设置好挂在服务端的QQ号,密码和是否隐身等信息

实现起来可以有两种考虑,
第一种是以shell脚本为主,即让shell脚本在系统后台监控,当满足一些条件时,调用expect脚本来控制TestQQ,向管理员发特定的消息,发完以后,服务端的QQ就退出;
比如,1.sh脚本用于检测系统的登陆人数,当登陆人数大于0时,调用1.exp脚本,将who命令的结果发给管理员的QQ

简单的举例:
  1. #!/bin/bash
  2. #flie_name 1.sh
  3. if [ `who | wc -l` -gt 0 ];then
  4.     ./1.exp   #同目录下的exp脚本
  5. fi
复制代码

  1. #!/usr/bin/expect
  2. #file_name 1.exp
  3. set QQnum 165165984  #管理员端的QQ号
  4. set run /home/wwy/TextQQ/TextQQ.sh #TextQQ的执行文件
  5. #-----------
  6. spawn $run
  7. sleep 1
  8. expect "*"
  9. sleep 3  #如果网速慢,可以加大这些sleep
  10. expect "*"
  11. sleep 3
  12. expect "*"
  13. sleep 3
  14. expect "*"
  15. sleep 5
  16. #-----------
  17. send "/msg $QQnum Ready_at_[exec date +%D--%R]\r"
  18. send "[exec who | xargs]\r" #who命令后用到了xargs,是因为TextQQ不支持换行的原因,在这里 "who | xargs" 可以换成其他脚本或命令,来实现更复杂的功能
  19. expect "*"
  20. expect eof
复制代码

将1.sh放到计划任务里后,就可以等着来自服务端的消息了

管理员端QQ的聊天纪录举例:
  1. Server 19:27:18
  2. Ready_at_07/24/05--19:27

  3. Server 19:27:18
  4. root pts/0 Jul 24 18:48 (cncln.online.ln.cn)
复制代码



第二种考虑是以expect脚本为主,就是将QQ一直挂在服务器后台,一旦满足某些条件,就执行shell脚本,因为expect能控制交互性
这样做就可以实现管理员向服务端QQ发消息,消息的内容为shell命令,系统做出反应,并将执行结果以QQ消息的形势回复给管理员

比如,2.sh脚本用于检查msg.log,这是TextQQ聊天纪录的存放文件,提取其中管理员最新说的话(即命令),执行并返回结果;

例如:
  1. #!/bin/bash
  2. #file_name 2.sh
  3. msg_log=/home/wwy/TextQQ/msg.log #msg.log文件
  4. file=/home/wwy/TextQQ/my_msg_log.txt #存放聊天纪录的文件
  5. QQnum=165165984 #管理员端的QQ号
  6. cmd=`cat msg.log | grep "\[" | tee -a $file | grep $QQnum | tail -1  | awk -F] '{print $2}'`
  7. #-----------------------
  8. if [ ! "$cmd" ];then
  9.     :
  10. elif [ ! "`eval "$cmd" 2>; /dev/null`" ];then
  11.     echo 'sorry, your cmd is no display return.'
  12. elif [ : ];then
  13.     eval "$cmd" | xargs
  14. fi
  15. #-----------------------
  16. >; $msg_log #清空msg.log,被清空的内容事先保存在my_msg_log.txt 之中
复制代码



同时,2.exp文件用于将QQ挂在后台,每隔几秒检查一下2.sh是否有结果返回,如果有将结果发给管理员
  1. #!/usr/bin/expect
  2. set QQnum 165165984 #管理员端的QQ号
  3. set shell_script /home/wwy/TextQQ/2.sh #2.sh文件的位置
  4. set run /home/wwy/TextQQ/TextQQ.sh
  5. #-----------
  6. spawn $run
  7. sleep 1
  8. expect "*"
  9. sleep 3
  10. expect "*"
  11. sleep 3
  12. expect "*"
  13. sleep 3
  14. expect "*"
  15. sleep 5
  16. #-----------
  17. send "/msg $QQnum Ready,waiting_your_cmd,at_[exec  date +%R--%D]\r"
  18. expect "*"
  19. sleep 1
  20. while {1} {
  21.     set r [exec $shell_script]
  22.     if {$r!=""} {
  23.         send "$r\r"
  24.         expect "*"
  25.     }
  26.     sleep 3  #内隔3秒检查一次2.sh是否有返回结果
  27. }
  28. expect eof
复制代码

将2.exp放到后台运行即可,等收到Server的“Ready,waiting_your_cmd...”这个消息后,就可以跟Server“聊命令了”
  1. ./2.exp &
复制代码



聊天纪录举例:
  1. Server 20:06:27
  2. Ready,waiting_your_cmd,at_20:06--07/24/05

  3. wwy 20:01:18
  4. pwd

  5. Server 20:07:09
  6. /home/wwy/TextQQ

  7. wwy 20:01:36
  8. ls

  9. Server 20:07:19
  10. 1.exp 1.sh 2.exp 2.sh classes config.ini err.log jre jre_u lib msg.log my_msg_log.txt readme.txt setenv.bat textqq.bat TextQQ.sh

  11. wwy 20:01:54
  12. uptime

  13. Server 20:07:39
  14. 20:07:39 up 6 days, 11:06, 1 user, load average: 0.00, 0.00, 0.00

  15. wwy 20:02:06
  16. touch tmp

  17. Server 20:07:59
  18. sorry, your cmd is no display return.  

  19. wwy 20:02:43
  20. ls tmp

  21. Server 20:08:29
  22. tmp

  23. wwy 20:10:24
  24. uname -a

  25. Server 20:16:10
  26. Linux Reinnat 2.4.21-4.ELsmp #1 SMP Fri Oct 3 17:52:56 EDT 2003 i686 i686 i386 GNU/Linux

  27. wwy 20:11:51
  28. iptables -L -n

  29. Server 20:17:40
  30. Chain INPUT (policy ACCEPT) target prot opt source destination DROP all -- 0.0.0.0/0 0.0.0.0/0 DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpts:135:139 DROP udp -- 0.0.0.0/0 0.0.0.0/0 udp dpts:135:139 DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpts:1433:1434 DROP udp -- 0.0.0.0/0 0.0.0.0/0 udp dpts:1433:1434 Chain FORWARD (policy ACCEPT) target prot opt source destination DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpts:135:139 DROP udp -- 0.0.0.0/0 0.0.0.0/0 udp dpts:135:139 DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpts:1433:1434 DROP udp -- 0.0.0.0/0 0.0.0.0/0 udp dpts:1433:1434 DROP icmp -- 0.0.0.0/0 0.0.0.0/0 Chain OUTPUT (policy ACCEPT) target prot opt source destination

  31. wwy 20:17:56
  32. sar 1 1 | sed -n '4p'

  33. Server 20:23:53
  34. 08:23:53 PM all 0.00 0.00 0.00 3.55 96.45
复制代码


因为在下expect用的太差,而TextQQ本身也有很多局限性,所以有很多不完善的地方,比如只能显示单行和非交互式命令的结果,像more,top这样的命令使用起来会出问题,不过,如果不要回显,一般单行命令都会执行,如rm,iptables等...
关于安全方面,权限就是运行TextQQ时的权限,因为在脚本里有过滤,所以也不用担心别人可以控制服务端的QQ,当然,自己的QQ被盗了除外



用QQ管理你的系统^_^

不錯哦...觸類旁通
如果有心,你可以看看 expect -re + expect_out 的用法
可以在 linux 端抓到輸入的是什麼
再對應要做什麼事
__________________________________
no pm,no answer



用QQ管理你的系统^_^

不错 支持一个.



用QQ管理你的系统^_^

有新意!



用QQ管理你的系统^_^

会不会被利用啊,用QQ有没漏洞啊
__________________________________
寻找一种价值,寻找一种自我!



用QQ管理你的系统^_^

运行有个提示出错呢

[root@chinatelecom TextQQ]# ./admin.exp
spawn /root/soft/qq/TextQQ/TextQQ.sh
wrong # args: should be "while test command"
    while executing
"while {1} "
    (file "./admin.exp" line 20)
__________________________________
my backbone



用QQ管理你的系统^_^

好贴



用QQ管理你的系统^_^

很不错的想法,既然可以发送qq,当然可以发送移动qq消息了,到时手机也可以收到了,对某些场合会非常神奇有效.



用QQ管理你的系统^_^

qqalive -i <你的号码>; -p <你的密码>; [-d] [-n|-o|-a|-h]


-d 为后台方式.. 日志会记到
-n 普通登录模式
-o offline模式
-a away 模式
-h 隐声模式

$(HOME)/oicq/你的号码


例如我们要挂机348498666 (我的号码)这个号...密码是 abc123

./qqalive -i 348498666 -p abc123 -d -h

大家记得不要黑我的号码噢..

如果大家有6,7多于的号码...能不能给我送个呢..


日志的问题.


如果你的QQ是348498666,HOME目录是 /home/test
那么日志在
http://www.linuxfans.org/nuke/modules.php?name=Site_Downloads&op=geninfo&did=3745



用QQ管理你的系统^_^

en


  首页 » 论坛 » Linux论坛 »
Copyright © 2001-2010 ChinaUnix.net All Rights Reserved     联系我们:

感谢所有关心和支持过ChinaUnix的朋友们    转载本站内容请注明原作者名及出处

京ICP证041476号


清除 Cookies - ChinaUnix - Archiver - WAP - TOP