Node.js SDK
Full guide for using @cmdop/sdk in Node.js applications.
Setup
import { Cmdop } from '@cmdop/sdk';
const client = new Cmdop({
apiKey: process.env.CMDOP_API_KEY,
});Machines
List Machines
const machines = await client.machines.list();
for (const machine of machines) {
console.log(machine.name, machine.status);
}Get Machine
const machine = await client.machines.get('machine-id');
console.log(machine);Machine Status
const status = await client.machines.status('machine-id');
console.log(status.connected, status.uptime);Commands
Execute Command
const result = await client.commands.exec(
'machine-id',
'ls -la /var/log'
);
console.log(result.stdout);
console.log(result.stderr);
console.log(result.exitCode);With Options
const result = await client.commands.exec(
'machine-id',
'npm install',
{
cwd: '/app',
env: { NODE_ENV: 'production' },
timeout: 60000,
}
);Streaming Output
const stream = client.commands.stream(
'machine-id',
'tail -f /var/log/app.log'
);
stream.on('stdout', (data) => {
console.log(data);
});
stream.on('exit', (code) => {
console.log('Exit code:', code);
});
// Stop after 10 seconds
setTimeout(() => stream.kill(), 10000);Files
List Directory
const files = await client.files.list('machine-id', '/home/user');
for (const file of files) {
console.log(file.name, file.size, file.isDirectory);
}Read File
const content = await client.files.read(
'machine-id',
'/etc/nginx/nginx.conf'
);
console.log(content);Write File
await client.files.write(
'machine-id',
'/tmp/test.txt',
'Hello, World!'
);Upload File
import fs from 'fs';
const buffer = fs.readFileSync('local-file.txt');
await client.files.upload(
'machine-id',
'/remote/path/file.txt',
buffer
);Real-time Events
const subscription = client.subscribe('machine-id');
subscription.on('status', (status) => {
console.log('Status changed:', status);
});
subscription.on('output', (output) => {
console.log('Command output:', output);
});
// Cleanup
subscription.unsubscribe();Error Handling
import { CmdopError, NotFoundError, AuthError } from '@cmdop/sdk';
try {
const machine = await client.machines.get('invalid-id');
} catch (error) {
if (error instanceof NotFoundError) {
console.log('Machine not found');
} else if (error instanceof AuthError) {
console.log('Authentication failed');
} else {
throw error;
}
}