Hello I have got a jar file lavalink to be exact which is basically a music module now i would like to start the jar file from my index.js(Main bot file) as I am not in the financial state to pay for a separate host for the lavalink server and would like to start and use the lavalink server in the same hosting container
No I am not running it in a browser I am using discord.js wrapper to interact with the discord API to make a backend program
Installation
Install child process npm i child-process this allows you to execute shell comands
Command
give the exec function as first parameter your command
exec("cd ~/<path-to-directory-jarFile> && java -jar Myjar_file.jar
cd ~/<path-to-directory-jarFile> goes in the directory where your jar file is
java -jar Myjar_file.jar executes your jar file
the && executes your commands consecutevely first the one before then the one after
Example
const { exec } = require("child_process");
exec("cd ~/<path-to-directory-jarFile> && java -jar Myjar_file.jar ", (error, stdout, stderr) => {
if (error) {
console.log(`error: ${error.message}`);
return;
}
if (stderr) {
console.log(`stderr: ${stderr}`);
return;
}
console.log(`stdout: ${stdout}`);
});
Executing Shell Commands in NodeJS:
https://stackabuse.com/executing-shell-commands-with-node-js/
Related
I am currently developing an Electron app and need it to look into the crontab file and parse it.
How can Node.js (or something else in Electron) access the main crontab file and read it?
I looked into the cron-parser library but it is only able to read cron-formatted strings, not access the file.
Thanks in advance.
Since the crontab file we see when we run is just a tmp file that shows whatever cron jobs the current user has created (which are stored in /var/spool/cron/crontabs) when whe don't normally have access to those files, I'd suggest you run a shell script to get these data:
const { exec } = require("child_process");
exec("crontab -l", (error, stdout, stderr) => {
if (error) {
console.log(`error: ${error.message}`);
return;
}
if (stderr) {
console.log(`stderr: ${stderr}`);
return;
}
//Do stuff with the read string on stdout
});
Hopefully this should give you the contents of the crontab under the user that's running the node script
I was wondering if I can get my bot to start an application on my computer? if i use a command like
if (message.content === 'grimm!start-minecraft')
is there a way to start an .exe file from a command?
You can use this code to run any .exe but it'll run that file on the pc you're hosting the bot on. Not the client's computer (That'd be weird)
const exec = require('child_process').execFile;
var runExe =fileName => {
exec( fileName , function(err, data) {
console.log(err)
console.log(data.toString());
});
}
runExe();
Also check this out
Hello I am looking to try and send commands to a program through node js. I am using child processes to exec the jar file. I have trouble sending the commands however
const exec = require('child_process').exec;
exec('java -jar C:\\Users\\19144\\Desktop\\all\\amp1\\Ampera1.jar -full', (e, stdout, stderr) => {
if (e instanceof Error) {
console.error(e);
throw e;
}
console.log('stdout ', stdout);
console.log('stderr ', stderr);
});
This is the child process being spawn and I wish to send the following command to the jar
'sendTransaction 12500000skms5OGjlKm5NJ7fyftdxkma9kUFR3ZxUO4EFw==GgpH9KkC 100 Ampera'
is there any way to feasible do this
12500000skms5OGjlKm5NJ7fyftdxkma9kUFR3ZxUO4EFw==GgpH9KkC
and
100
are variables
I have an application which needs to run with the following command:
be-engine.exe -u producer -c D:\Workspace\V114_new\KinesisChannel\kinesis.cdd D:\Workspace\V114_new\KinesisChannel.ear -n logs002
Here i need to navigate to the bin director of the installed application and the run the be-engine.exe passing other file paths as well in the command on windows.
I want to automate this using protractor so that on start the above commands run automatically and engine gets started.
Is there a way to do this in protractor using javascript.
NodeJS has exec method for this:
const { exec } = require('child_process');
exec('be-engine.exe -u producer -c D:\Workspace\V114_new\KinesisChannel\kinesis.cdd D:\Workspace\V114_new\KinesisChannel.ear -n logs002', (error, stdout, stderr) => {
if (error) {
console.error(`exec error: ${error}`);
return;
}
console.log(`stdout: ${stdout}`);
console.error(`stderr: ${stderr}`);
});
https://nodejs.org/api/child_process.html#child_process_child_process_exec_command_options_callback
Check also this answer: Execute a command line binary with Node.js
In the middle of my Node.js file I want to store the terminal response of docker run -v ${PWD}/app.py:/app.py proj1part1dockerimage in my file and store the output as a var. How would i go about getting a terminal response without opening a terminal?
In node.js everything is asynchronous, so you have to use a callback:
child_process.exec("docker run -v ${PWD}/app.py:/app.py proj1part1dockerimage",
(err, stdout, stderr) => {
const output = stdout.toString();
}
)
But if you require it to be instant which I don't recommend:
const output = child_process.execSync("docker run -v ${PWD}/app.py:/app.py proj1part1dockerimage").toString();