Desarrollé una extensión vscode con TypeScript, que proporciona una función para la prueba de conexión remota. Pero ocasionalmente este comando de prueba de conexión se atasca y nunca regresa。
Mi código es así:
const util = require('util'); const exec = util.promisify(require('child_process').exec); export class ConnectService { async testConnectionByCmd(instanceInfo: any) { //some code to get connection info …… // test connection by cmd let cmd = `ssh -tt -o StrictHostKeyChecking=no -i ${IdentityFile} ${User}@${HostName} -p ${Port} echo $? "exit 0"`; Logger.info('check connection cmd : ' + cmd); return new Promise(async resolve => { let stdout, stderr; try { ({stdout, stderr} = await exec(cmd)); // hang at here sometime Logger.info('exec(cmd).stdout: ' + stdout); // and this log is not printed Logger.info('exec(cmd).stderr: ' + stderr); } catch (e: any) { ({stdout, stderr} = e); } return resolve({stdout, stderr, HostName}); }); }Cuando el código se cuelga aquí, abro una terminal y ejecuto el comando en la terminal, regresa normal y rápidamente, lo que significa que la conexión de red del host remoto es normal. Pero el código ts aún se cuelga aquí y nunca regresa.
¿Cuál es la razón para esto? ¡Gracias!