Я совершенно новичок в NodeJS, и сейчас я просто пытаюсь и ошибаюсь на основе кода, который нахожу.
Я хочу контролировать свой роутер дома. Чтобы получить данные, мне нужно выполнить http-запрос через nodejs и сохранить «токен» в переменной. Этот токен устанавливается в конец реального запроса данных. Результат curl:
[long html stuff]
var _httoken = 12391231849184ß
[even longer html stuff]
В bash curl я бы сделал это так:
token=`curl -v --silent http://192.168.2.1/html/login/status.html?lang=de 2>&1 | grep _httoken | grep -o '[0-9]\+'
Но когда я пытаюсь получить это так:
const { exec } = require('child_process');
exec('curl -v --silent http://192.168.2.1/html/login/status.html?lang=de 2>&1 | grep _httoken | grep -o '[0-9]\+'', (err, stdout, stderr) => {
if (err) {
// node couldn't execute the command
return;
}
// the *entire* stdout and stderr (buffered)
console.info(`stdout: ${stdout}`);
console.info(`stderr: ${stderr}`);
});
Я получил:
exec('curl -v --silent http://192.168.2.1/html/login/status.html?lang=de 2>&1 | grep _httoken | grep -o '[0-9]\+'', (err, stdout, stderr) => {
SyntaxError: Invalid or unexpected token
На \
.
Как я могу сохранить цифры?
заранее спасибо
Сначала мне нужно найти строку с записью _httoken, затем мне просто нужны цифры после _httoken = 212313
Затем используйте grep _httoken | grep -o '[0-9]*'
Это работает, большое спасибо. Теперь мне просто нужно знать, как сохранить это в переменной, чтобы использовать ее снова: D
Почему два звонка
grep
? Попробуйтеgrep -o '[0-9]*'
. Здесь вам не следует избегать+
, поскольку вы нет пытаетесь сопоставить буквальный+
.