Si l'imprimante prend en charge SNMP vous pourriez avoir de la chance d'interroger avec n'importe quel outil de ligne de commande SNMP.Il existe des définitions standard pour les imprimantes et ils contiennent des API pour interroger les niveaux d'encre actuels et maximum
Voici comment je le fais avec simple shell unix commandes (nécessite net-snmp installé) .Ce n'est pas strictement Mac mais vous devriez avoir une idée:
#!/bin/sh
me="${0##*/}"
host="${1:-wp4535}"
base=1.3.6.1.2.1.43.11.1.1
name="WP-4535"
type=$(snmpget -v1 -c public ${host} SNMPv2-MIB::sysDescr.0)
case "$type" in
"SNMPv2-MIB::sysDescr.0 = STRING: EPSON"*)
type=epson
ofs=1
;;
*)
echo "! unknown printer type" 1>&2
exit 1
;;
esac
echo "# $host $type $name"
# get current ink levels
eval $(snmpwalk -v1 -Ov -OQ -c public ${host} ${base}.6.${ofs} |
perl -ne 'print "c[",++$c,"]=$1\n" if(m!"(\w+) ink!i);')
# get max ink level per cartridge
eval $(snmpwalk -v1 -Ov -OQ -c public ${host} ${base}.8.${ofs} |
perl -ne 'print "max[",++$c,"]=$1\n" if(m!(\d+)!i);')
snmpwalk -v1 -Ov -OQ -c public ${host} ${base}.9.${ofs} |
perl -ne '
my @c=("","'${c[1]}'","'${c[2]}'","'${c[3]}'","'${c[4]}'");
my @max=("","'${max[1]}'","'${max[2]}'","'${max[3]}'","'${max[4]}'");
my $v=$c[++$c];
printf"# $v=$1 (%.0f)\n",$1/$max[$c]*100 if(m!(\d+)!i);'