#irc #channel #server #irc-client #pipe #unix #command

app hashpipe

Unix管道 + IRC

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

MIT 许可证

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