smstools-modem-info.js 1.21 KB
/* eslint-disable no-console */

// const MAX_LINES_TO_READ = 100000;

const util = require('util');

const exec = util.promisify(require('child_process').exec);

async function getLastLineFromLog(keyword, modemName, logFileName) {
    let execResult;
    try {
        // eslint-disable-next-line max-len
        // execResult = await exec(`tail -n${MAX_LINES_TO_READ} ${logFileName} |grep ${modemName}:|grep ${keyword}:|tail -n1`);
        execResult = await exec(`tac ${logFileName} |grep ${modemName}:|grep -m 1 ${keyword}:`);
    } catch (e) {
        console.error(`SMSTOOLS-MODEM-INFO: Got exception. ${e.toString()}`);
        return null;
    }

    return (execResult && execResult.stdout) || null;
}

exports.getIMSI = async (modemName, logFileName) => {
    const lastLine = await getLastLineFromLog('IMSI', modemName, logFileName);
    if (!lastLine) return null;

    const matches = lastLine.trim().match(/IMSI: (\d+)$/);
    return matches && matches[1];
};

exports.getIMEI = async (modemName, logFileName) => {
    const lastLine = await getLastLineFromLog('IMEI', modemName, logFileName);
    if (!lastLine) return null;

    const matches = lastLine.trim().match(/IMEI: (\d+)$/);
    return matches && matches[1];
};