實現telegram普通賬號定時發佈信息,定時簽到(ps:不是機器人bot)
筆者搭建的是一臺初始centos 7服務器
安裝環境
OS:centos7
安裝方式:編譯安裝
其他系統的安裝教程可以看github項目中README
暫未找到yum源
實現原理:利用telegram-cli模式登陸到服務器端,再做定時任務、發送消息
搭建telegram-cli
yum -y install git
yum update -y nss curl libcurl
git clone --recursive https://github.com/vysheng/tg.git && cd tg
yum -y install lua-devel openssl-devel libconfig-devel readline-devel libevent-devel jansson-devel python-devel gcc
./configure
make
依次運行上述命令後,telegram-cli已經安裝完成,可執行文件在當前目錄下的bin/telegram-cli
登錄Telegram-cli之前需要在https://my.telegram.org/apps
獲取pub密鑰。我選擇創建的application類型爲app(這裏填什麼都行 )
主要是獲取 Public keys
用來登陸telegram驗證
可以新建一個文件,然後把 public key 的內容複製進去並保存
將Public keys
複製,回到服務器端。執行以下命令,將密鑰保存到 mytg-server.pub
文件中。
vi mytg-server.pub
上述操作完畢之後,就可以登錄了。
執行命令:
/root/tg/bin/telegram-cli -k mytg-server.pub
提示輸入電話號碼和驗證碼,登錄就可以了。
登錄完畢後可以按ctrl-c
鍵退出,或者使用命令quit
或safe_quit
退出。
發送消息
執行命令bin/telegram-cli -W
進入命令行模式 格式爲(標籤 用戶或羣組名稱 內容)
ps:用戶羣組名稱可以用 (Id 用戶名 羣組名稱) 中間有空格
或者#
標識 需要使用_
替換
輸入msg @xxx text
即可發送時時消息
可以按ctrl-c
鍵退出,或者使用命令quit
或safe_quit
退出。
直接發送消息:bin/telegram-cli -W -e "msg <username/channelname> <msg>"
用腳本發送消息
上面是telegram-cli的簡單使用 下面使用腳本命令發送消息
編輯一條腳本 vi/root/tg.sh
#!/bin/bash
to=$1
msg=$2
/root/tg/bin/telegram-cli -W -e "msg $to $msg"
調用方式
bash root/tg.sh @xxxx 這是一條測試信息
定時發送消息(crontabs)
腳本寫完了 咱們加到定時任務裏面去 可以實現每天定時發送消息、早晚簽到等
主要是使用crontabs
裝不上的自己想想辦法,已經安裝的可以跳過
yum -y install vim-enhanced.x86_64
yum install crontabs
systemctl enable crond #(設爲開機啓動)
systemctl start crond #(啓動crond服務)
systemctl status crond #(查看狀態)
vi /etc/crontab
可以看到:
Example of job definition:
.---------------- minute (0 - 59)
| .------------- hour (0 - 23)
| | .---------- day of month (1 - 31)
| | | .------- month (1 - 12) OR jan,feb,mar,apr ...
| | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
| | | | |
* * * * * user-name command to be executed
分鐘(0-59) 小時(0-23) 日(1-31) 月(11-12) 星期(0-6,0表示週日) 用戶名 要執行的命令
這是使用定時器的基本意思這裏不做過多概述
crontab -e
執行這個命令添加定時器規則 以早9點晚7點爲例
0 9 * * * bash /root/zao.sh
0 19 * * * bash /root/wan.sh
crontab -l
查詢當前定時器
上面定時器設置好了 我們需要添加定時器腳本可以實現波動性打卡 在9點-9點半內 19點-19點半內 波動性打卡
編輯早腳本 vi/root/zao.sh
#!/bin/bash
#隨機數,表示隨機一個30以內的數
randNum=$(($RANDOM%30))
echo -e $[randNum]" 9 * * * bash /root/tg.sh 打卡通知羣 測試早打卡\n0 19 * * * bash /root/wan.sh"> /root/user
#設置可執行權限
chmod 777 /root/user
#使用crontab 命令添加到定時任務
crontab /root/user
編輯晚腳本 vi/root/wan.sh
#!/bin/bash
#隨機數,表示隨機一個30以內的數
randNum=$(($RANDOM%30))
echo -e $[randNum]" 19 * * * bash /root/tg.sh 打卡通知羣 測試晚打卡\n0 9 * * * bash /root/zao.sh"> /root/user
#設置可執行權限
chmod 777 /root/user
#使用crontab 命令添加到定時任務
crontab /root/user
好了將上面的方法執行下就可以實現telegram 定時發送信息 在時間範圍內波動性打卡
因爲定時器沒有波動的參數,所以想到了執行定時器創建出來一個波動時間定時器,再將以前的定時器覆蓋掉,從而實現波動的定時器(模擬真人簽到)