task_exec_interactive
Execute SSH commands with interactive prompt handling for yes/no, password, and custom responses in remote server management.
Instructions
Exécute une commande SSH avec gestion des prompts interactifs (yes/no, passwords, etc.).
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| alias | Yes | Alias du serveur cible. | |
| cmd | Yes | La commande à exécuter. | |
| interactive | No | Mode interactif. | |
| autoRespond | No | Répondre automatiquement aux prompts standards. | |
| responses | No | Réponses personnalisées aux prompts (clé: pattern, valeur: réponse). | |
| timeout | No | Timeout personnalisé en secondes. Défaut 2 minutes. | |
| rappel | No | Définit un rappel en secondes. |
Implementation Reference
- server.js:560-577 (handler)Handler function that queues an interactive SSH job using the queue system, executes it via ssh.executeCommand, and returns the result or background status after waiting for completion.async (params) => { const job = queue.addJob({ type: 'ssh', ...params, status: 'pending', interactive: params.interactive, autoRespond: params.autoRespond }); history.logTask(job); ssh.executeCommand(job.id); const finalJob = await waitForJobCompletion(job.id, params.timeout || config.syncTimeout); if (finalJob) { return { content: [{ type: "text", text: `Résultat commande interactive (tâche ${finalJob.id}):\n${finalJob.output || JSON.stringify(finalJob, null, 2)}` }] }; } else { return { content: [{ type: "text", text: `Tâche interactive ${job.id} initiée en arrière-plan.` }] }; } }
- server.js:547-558 (schema)Zod input schema defining parameters for the interactive SSH execution tool, including server alias, command, interactive mode, auto-respond, custom responses, timeout, and reminder.{ title: "Exécuter une commande interactive (SSH)", description: "Exécute une commande SSH avec gestion des prompts interactifs (yes/no, passwords, etc.).", inputSchema: z.object({ alias: z.string().describe("Alias du serveur cible."), cmd: z.string().describe("La commande à exécuter."), interactive: z.boolean().optional().default(true).describe("Mode interactif."), autoRespond: z.boolean().optional().default(true).describe("Répondre automatiquement aux prompts standards."), responses: z.record(z.string()).optional().describe("Réponses personnalisées aux prompts (clé: pattern, valeur: réponse)."), timeout: z.number().optional().describe("Timeout personnalisé en secondes. Défaut 2 minutes."), rappel: z.number().optional().describe("Définit un rappel en secondes.") })
- server.js:545-578 (registration)MCP server registration of the 'task_exec_interactive' tool, including schema and inline handler function.server.registerTool( "task_exec_interactive", { title: "Exécuter une commande interactive (SSH)", description: "Exécute une commande SSH avec gestion des prompts interactifs (yes/no, passwords, etc.).", inputSchema: z.object({ alias: z.string().describe("Alias du serveur cible."), cmd: z.string().describe("La commande à exécuter."), interactive: z.boolean().optional().default(true).describe("Mode interactif."), autoRespond: z.boolean().optional().default(true).describe("Répondre automatiquement aux prompts standards."), responses: z.record(z.string()).optional().describe("Réponses personnalisées aux prompts (clé: pattern, valeur: réponse)."), timeout: z.number().optional().describe("Timeout personnalisé en secondes. Défaut 2 minutes."), rappel: z.number().optional().describe("Définit un rappel en secondes.") }) }, async (params) => { const job = queue.addJob({ type: 'ssh', ...params, status: 'pending', interactive: params.interactive, autoRespond: params.autoRespond }); history.logTask(job); ssh.executeCommand(job.id); const finalJob = await waitForJobCompletion(job.id, params.timeout || config.syncTimeout); if (finalJob) { return { content: [{ type: "text", text: `Résultat commande interactive (tâche ${finalJob.id}):\n${finalJob.output || JSON.stringify(finalJob, null, 2)}` }] }; } else { return { content: [{ type: "text", text: `Tâche interactive ${job.id} initiée en arrière-plan.` }] }; } } );