linux - 使用脚本将字符串传递给 linux cli 交互式程序

标签 linux bash telegram

我正在使用一个库在 bash linux ubuntu 中通过命令行访问 Telegram 。 这是 Telegram -cli。 引用 https://github.com/vysheng/tg

这是一个交互式程序,可以通过以下方式启动

./bin/telegram-cli -k tg-server.pub

它输出这些行:

Telegram-cli version 1.1.1, Copyright (C) 2013-2014 Vitaly Valtman
Telegram-cli comes with ABSOLUTELY NO WARRANTY; for details type `show_license'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show_license' for details.
I: config dir=[/home/utonto/.telegram-cli]
>

用“>”提示。 要发送消息,在此提示符下您必须键入

msg USERNAME This is a test message

我想在我的电脑上运行一个脚本,告诉我工作时的室温。 我怎样才能做到这一点? 我搜索了 SO 并发现了类似的问题。 建议使用“expect”命令,我这样做了但没有用。也许 - 当然 - 因为我是初学者。 我也试过了

echo "msg USERNAME this is a message |
telegram-cli -k ......"

但是没有用。 据您所知,在我的安卓系统上,我有一个用于 Telegram 的电话号码,但我使用另一部手机注册了 Telegram -cli。 有人可以帮助我吗?

最佳答案

参见此处:remote control with Telegram

为了拦截新的传入消息,我们创建了一个文件 action.lua

"Lua is a powerful, fast, lightweight, embeddable scripting language.

Lua combines simple procedural syntax with powerful data description constructs based on associative arrays and extensible semantics. Lua is dynamically typed, runs by interpreting bytecode for a register-based virtual machine, and has automatic memory management with incremental garbage collection, making it ideal for configuration, scripting, and rapid prototyping."

来自 http://www.lua.org .

sudo nano /home/pi/tg/action.lua

有这个内容

function on_msg_receive (msg)
    if msg.out then
        return
    end
    if (msg.text=='ping') then
        send_msg (msg.from.print_name, 'pong', ok_cb, false)
    end
end

function on_our_id (id)
end

function on_secret_chat_created (peer)
end

function on_user_update (user)
end

function on_chat_update (user)
end

function on_get_difference_end ()
end

function on_binlog_replay_end ()
end

保存并退出,当收到的短信是“ping”时,Telegram 回复我们一条包含“pong”的短信。

move in tg

cd /home/pi/tg

然后输入

bin/telegram-cli -k tg-server.pub -W -s action.lua

关于linux - 使用脚本将字符串传递给 linux cli 交互式程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27671801/

相关文章:

linux - 如何启动多个 xterm 窗口并在每个窗口上运行命令,然后让每个窗口保持打开状态?

c - ALSA hw_params 缓冲区大小是物理卡内存大小吗?

bash - 打印一个字符串,其特殊字符打印为文字转义序列

telegram - Telegraph.ph 文本格式

android - 如何在我现有的 Android 应用程序中使用 Telegram API(包括聊天应用程序)?

node.js - 如何管理私有(private) channel 中的邀请链接?

linux - 比较一个字段,如果另一字段的值更大,则删除重复项

linux - 我们使用 openstack keypair 命令到 vm 时的路径是什么

bash - 如何检测当前正在 Linux 中播放的声音?

bash - shell 脚本中的连接和 'basename' 的使用