Linux通过Nodejs的IPP库实现自动定时打印
Linux通过Nodejs的IPP库实现自动定时打印
家用喷墨打印机长时间不用,会出现喷头堵塞,做一个自动打印脚本,防止长时间不打印,打印机坏掉的情况。
环境:
系统:群晖 6.4
虚机:Docker ->Centos 7.8
步骤:
- 安装Docker,拉取Centos系统,设置最高权限运行(非常重要!!!),因为要使用定时任务【Crontab】,这里篇幅太大,请自行解决。
- 进入虚机ssh,安装Nodejs
#1、如果已经安装了可以跳过该步:
yum install -y wget
#2、下载Nodejs:
cd /home
wget https://nodejs.org/dist/v12.18.3/node-v12.18.3-linux-x64.tar.xz
#3、解压
xz -d node-v12.18.3-linux-x64.tar.xz
tar -xf node-v12.18.3-linux-x64.tar
#4、链接
ln -s ~/node-v12.18.3-linux-x64/bin/node /usr/bin/node
ln -s ~/node-v12.18.3-linux-x64/bin/npm /usr/bin/npm
#5、测试
node -v
npm
3.编写执行脚本
初始化环境
#1、创建项目目录
mkdir autoprint
cd autoprint
#2、下载需要打印的图片
wget http://pdfkit.org/docs/img/15.png
#3、下载需要的组件
npm install fs
npm install ipp
#4、创建运行脚本
vi main.js
写入执行代码
var ipp = require("ipp");
var fs = require("fs");
//加载本地图片
let data = fs.readFileSync("/home/autoprint/15.png");
//配置打印机参数,我这里使用的是L4169爱普生打印机,可以通过具体通过浏览器查询打印机信息
var file = {"operation-attributes-tag":{"requesting-user-name": "User","job-name": "Print Job","document-format": "image/jpeg" //这个是最主要的,要查询是否支持,文档将最后附上查询代码},data: data};
//打印机IPP地址
var printer = ipp.Printer("http://192.168.30.240:631/ipp/print");
//执行打印 Print-Job:打印任务
/*
这里附上我的打印机支持的任务类型'operations-supported': [ 'Print-Job', 'Validate-Job', 'Create-Job', 'Send-Document', 'Cancel-Job', 'Get-Job-Attributes', 'Get-Jobs', 'Get-Printer-Attributes', 'Close-Job', 'Identify-Printer' ], */
printer.execute("Print-Job", file, function (err, res) {console.log("Printed: " + res.statusCode);
});//保存,退出
设置执行权限
chmod 755 main.js
测试脚本
node main.js
如果一切顺利,你将看到打印机动作了,然后就喷出了几棵树的图片
- 安装定时任务,编写定时任务命令
yum install crontabs
systemctl enable crond
systemctl start crond
#请勿使用 crontab -e 在docker环境下不起作用
vi /etc/crontab
编写定时任务
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root# For details see man 4 crontabs# 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
# | | | | |
# 每隔5天的早上10点30执行
30 10 * */5 * root sh node /home/autoprint/main.js
- 完成
- 附上打印机参数查询代码
var ipp = require("ipp");
var id = 0x0123;//made up reqid
var printer = ipp.Printer("http://192.168.30.240:631/ipp/print");
printer.execute("Get-Printer-Attributes", null, function(err, res){console.log(res);
});
Linux通过Nodejs的IPP库实现自动定时打印相关推荐
- nginx nodejs环境配置_在Linux系统配置Nodejs环境的最简单步骤,部署多个thinkjs(nodejs)项目...
发现一台服务器部署管理多个nodejs服务,可以采用二级域名weekly.mwcxs.top,也可以采用固定后缀www.mwcxs.top/weekly的方式,本文先从固定后缀的方式部署管理多个nod ...
- IPP库的安装以及源码分析方法
目录 第一部分 IPP环境搭建(基于win10的WSL) 1.1 WSL的几种安装方法 1.1.1 开启wsl支持 1.1.2 (可选)使用Windows store直接安装 (1)下载 (2)安装 ...
- Linux下的静态链接库和动态链接库编程
Linux下的静态链接库和动态链接库编程 参考: Linux下的静态链接库和动态链接库编程 - Histring - 博客园 Mac下静态库和动态库的创建和使用_C/C++_vincent2610的专 ...
- linux系统下的“静态库和动态库”专题之二:库的创建和使用
接上文[linux系统下的"静态库和动态库"专题之一:库的概念和规则]所述,我们通常把一些公用函数制作成函数库,供其它程序使用.函数库分为静态库和动态库两种. – 静态库在程序编译 ...
- Qt 配置使用IPP库
Inter IPP库的简介与配置 1.Inter IPP库简介 IPP"Intel Integrated Performance Primitives" ( Intel IPP ) ...
- Intel的ipp库(Integrated Performance Primitives)
IPP库包含了许多底层优化的函数.如果已经安装了IPP库,opencv在运行时也会自动调用.NVIDIA公司针对GPU开发了的GPU加速的图像.视频.信号处理库NPP(NVIDIA Performan ...
- linux定时任务nodejs,让Nodejs来管理定时任务later
从零开始nodejs系列文章,将介绍如何利Javascript做为服务端脚本,通过Nodejs框架web开发.Nodejs框架是基于V8的引擎,是目前速度最快的Javascript引擎.chrome浏 ...
- Intel IPP库使用入门
version 1.0 2008-11-11 说明:本文基于IPP v5.3 update 3 for Windows* on IA-32,参考的文档采用安装包安装的文档: 文档"userg ...
- Qt Creator配置Intel IPP库并实现信号带通滤波
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 文章目录 前言 一.环境参数 二.添加步骤 1.安装IPP2018 2.配置环境变量 3.引入lib文件 三. 测试 输出结果 ...
最新文章
- AI框架精要:设计思想
- LPMS_IMU在TX2上使用
- 推荐一个非常好用的Chrome扩展应用,用于美化Json字符串
- git设置和取消代理
- 软件能力[置顶] 程序员如何成为设计师,软件公司如何成为苹果?
- 32位机器下面各类型的取值范围(sizeof值)
- SQ小组KTV点歌系统简介
- c语言中如何用程序判断double型的浮点数能精确到几位小数,C语言中浮点数double/float相等判断...
- 【笔试记录】2021/3/13美团
- 神奇的 SQL 之团结的力量 → JOIN
- mysql链接压测_MySQL压测工具mysqlslap的介绍与使用
- 计算机国家实验教学示范中心,教育部、财政部关于批准2007年国家级实验教学示范中心建设单位的通知...
- python字符串find方法(二分钟读懂)
- iOS 10 消息推送
- 数据字典在mysql中怎么做_如何编写数据字典
- 服务器画图plots不显示,Rstudio的Plots不显示图形
- java sof栈泄露_java虚拟机(四)--内存溢出、内存泄漏、SOF
- 开发基于地图的火车站点查询系统
- python之arp欺骗
- MySQL 使用 B+ 树的研究
热门文章
- CREAL CEO:AR/VR动态变焦有哪几种解决方案?
- CMMI V2.0培训纪实
- Python内置函数、匿名函数
- git pull时提示错误:warning: ignoring broken ref refs/remotes/origin/HEAD的解决办法
- 用tecplot作平均速度流线图
- C语言编程编制职工档案管理程序,C语言课程设计--职工档案及简明信息生成.doc...
- Invalid Component definition:header
- 《钻石王牌》:热血青春·棒球1号位
- 警务通、停车场收费终端集成手机拍照车牌识别SDK,通过手机就可实现快速便捷的出入口系统管理...
- BigDecimal