免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3116 | 回复: 3
打印 上一主题 下一主题

自制简漏的终端聊天脚本,请大家多斧正,谢谢 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-09-02 15:21 |只看该作者 |倒序浏览
无聊时用write做了个简单的icq.sh,目前只实现了在同一主机下的所有终端互聊。谈不上什么功能和界面了,主要是抛砖引玉,各位请多修正改进请大家帮着精进啊,谢谢!

脚本简单说明:

  1)由于write默认为root权限,普通用户要使用write必须要先由root授权
授权成功后,可建一普通聊天用户icq(呵呵,不爽就自已改改,当然脚本中的用户名也请相应修改)

   2)icq用户根下必须要有配置表user.dat,规则为每行为3个字段,分别为序号,tty名,网点名称,字段间以空格分隔.各位可按实际情况编辑生成该表,shell根据这表来选择聊天对像,未在该表中反映的终端和用户将不能应用本shell
$cat user.dat
1  ttyp0 沙湾局
2  ttyp1 乐山局


   3)必须要对方TTY开启并已用icq用户登陆才能与之互聊,聊完之后按Ctrl-d即可退出。已在sco5.0.5 ksh下测试通过,在unix下自已和自已聊起来还是别有一番风味的 ^_^



  1. #/bin/ksh
  2. #终端聊天shell
  3. trap 'tput sgr0 ; rm $HOME/talk.temp $HOME/icq.tmp 2>/dev/null ; clear ; exit 0 ' 0 1 3 9 15
  4. trap '' 2
  5. tput bold
  6. clear
  7. icqname="icq"

  8. test -e $HOME/user.dat || { echo "\n        用户配置表 user.dat 不存在\n\n        请联系管理人员解决 ^_^ " ; read ; exit 0 ; }

  9. metty=`tty|awk -F"/" '{print $3}'`

  10. if [ -e $HOME/icq.tmp ]
  11. then
  12. me=`awk '{print $3}' $HOME/icq.tmp`
  13. if [ "$metty" = "$me" ]
  14. then
  15. yourtty=`awk '{print $2}' $HOME/icq.tmp`
  16. yourname=`awk '{ if ($2=="'$yourtty'") print $3}' $HOME/user.dat`   
  17. mename=`awk '{if ($2=="'metty'") print $3}' $HOME/user.dat`
  18. mexh=`awk '{if ($2=="'metty'") print $1}' $HOME/user.dat`
  19. clear ; mesg -y ; echo "\n        你正与 ${yourname} 聊天\n "
  20. echo "\n        ${mename} 正与你聊天,请选择 ${mexh} 与之对聊\n" >/dev/$yourtty
  21. /tcb/bin/asroot write $icqname $yourtty ; exit 0
  22. fi
  23. fi

  24. while :
  25. do
  26. clear
  27. who | awk '{print $1,$2}' >$HOME/talk.temp
  28. sed '/'"$metty"'/d;/^#/d' $HOME/user.dat |awk 'BEGIN{printf("\n%-5s%-10s%-16s\n"),"序号","TTY","用户名"} \
  29. {printf("%-5s%-10s%-16s\n"),$1,$2,$3}'

  30. echo -n  "\n        请输入对方的序号(q键退出程序):   "
  31. read xh
  32. test "$xh" = "q" -o "$xh" = "Q" && exit 0   
  33. yourtty=`awk '{if ($1=="'$xh'") print $2 }' $HOME/user.dat 2>/dev/null`
  34. test -z "$yourtty" && { echo "\n       $xh 未配置TTY\n" ; read ; continue ; }

  35. ut=`awk '{if ($2=="'$yourtty'") print $2}' $HOME/talk.temp 2>/dev/null`
  36. test -z "$ut" && { echo "\n       ${ut} 终端未登陆\n" ; read ; echo $icqname $metty $yourtty > $HOME/icq.tmp ; continue ; }

  37. yn=`awk '{if ($1=="'$icqname'" && $2=="'$ut'") print $1,$2}' $HOME/talk.temp 2>/dev/null`
  38. test -z "$yn" && { echo "\n        $icqname 用户未在 $ut 终端上登陆\n" ; read ; \
  39. echo $icqname $metty $yourtty > $HOME/icq.tmp ; continue ;  } || break
  40. done
  41. mesg -y
  42. clear
  43. echo $icqname $metty $yourtty > $HOME/icq.tmp
  44. yourname=`awk '{if ($2=="'$ut'") print $3 }' $HOME/user.dat`
  45. mename=`awk '{if ($2=="'$metty'") print $3 }' $HOME/user.dat`
  46. mexh=`awk '{if ($2=="'$metty'") print $1 }' $HOME/user.dat`
  47. echo "\n        你正与 ${yourname} 聊天\n"
  48. echo "\n        你正与 ${mename} 聊天\n        请选择 ${mexh} 与之对聊\n" >/dev/$yourtty
  49. /tcb/bin/asroot write $icqname $yourtty
复制代码

论坛徽章:
0
2 [报告]
发表于 2005-09-02 15:41 |只看该作者

自制简漏的终端聊天脚本,请大家多斧正,谢谢

有点意思,研究下

论坛徽章:
0
3 [报告]
发表于 2005-09-02 16:13 |只看该作者

自制简漏的终端聊天脚本,请大家多斧正,谢谢

欢迎测试,请多提意见和改进方案,谢谢.

论坛徽章:
0
4 [报告]
发表于 2005-09-02 16:28 |只看该作者

自制简漏的终端聊天脚本,请大家多斧正,谢谢

强人,赞一个!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP