3个版本
使用旧的Rust 2015
0.1.2 | 2017年7月8日 |
---|---|
0.1.1 | 2017年1月2日 |
0.1.0 | 2017年1月1日 |
#19 in #irc-client
15KB
259 行
#|: 将数据通过Unix管道发送到和从IRC
Hashpipe 允许您通过Unix管道将stdin和stdout连接到IRC。例如,
sleep 5; echo "done" | hashpipe --server irc.freenode.net
当长时间运行的命令完成后,将消息发送到Freenode网络上的 #hashpipe
频道。
默认情况下,stdin将回显到hashpipe加入的所有频道,NOTICE和PRIVMSG将打印到stdout。您甚至可以用它作为一个(糟糕的)IRC客户端
$ hashpipe -s irc.freenode.net
lm->#hashpipe: hello there hashpipe
hello to you, lm
lm->hashpipe: I can even /msg you
neat!
(I can't msg you back, though)
Hashpipe 也很适合监听IRC频道
if hashpipe --server my.irc.server --channels "#commandcentre" | grep -m 1 "oh geez, it's the law"; then
shred ~/Documents/secret/**/*
fi
您甚至可以用hashpipe做半交互式的事情
echo "Say 'stop' in the next 60 seconds to cancel a reboot" | timeout 60 hashpipe -s my.irc.server | grep -m 1 "stop"
ret=$?
if [[ $ret -eq 1 ]]; then
reboot;
fi
当然,最好的应用是将频道垃圾邮件^W^W重要消息发送到频道
$ echo "srs bznz" | figlet -f slant | hashpipe -s irc.for.professionals -c "#important"
<hashpipe> __
<hashpipe> _______________ / /_ ____ ____ ____
<hashpipe> / ___/ ___/ ___/ / __ \/_ / / __ \/_ /
<hashpipe> (__ ) / (__ ) / /_/ / / /_/ / / / / /_
<hashpipe> /____/_/ /____/ /_.___/ /___/_/ /_/ /___/
原始模式
Hashpipe 还可以将stdin解析为原始IRC命令,并输出服务器发送的所有内容。这主要用于发送直接PRIVMSG或自动化各种oper任务。
它理解如何解析这里列出的命令 这里。如果命令解析失败,它会警告您,但会继续处理stdin。
例如,
$ hashpipe --server my.irc.server -io
:my.irc.server 1 hashpipe :Welcome to My IRC Server [email protected]
<snip>
:[email protected] MODE hashpipe +x
JOIN #hashpipe
:[email protected] JOIN #hashpipe
:my.irc.server 353 hashpipe @ #hashpipe :hashpipe @`lm`
:my.irc.server 366 hashpipe #hashpipe :End of /NAMES list.
PRIVMSG #hashpipe :hello
PRIVMSG lm :hi there
NICK bob
:[email protected] NICK :bob
用法
USAGE:
hashpipe [FLAGS] [OPTIONS] --server <server>
FLAGS:
-h, --help Prints help information
-d, --no-ssl Disable SSL encryption
-q Only print errors (overrides -v; overridden by raw output)
-i, --raw-in Interpret STDIN as raw IRC commands
-o, --raw-out Echo everything from the IRC server directly
-v Verbosity (1 for info, 2 for debug)
-V, --version Prints version information
OPTIONS:
-c, --channels <channels> Channel(s) to speak in (defalt: #hashpipe, or nothing if using raw input)
-n, --nick <nick> Nickname to use (default: hashpipe)
-p, --port <port> Port to use (default: 6667, or 6697 with SSL)
-s, --server <server> IRC server to connect to
依赖关系
~7MB
~125K SLoC