我正在使用libssh API与设备进行通信。我能够以“ root”身份登录并运行“ ls -l”之类的基本命令。
问题陈述: 我想在此设备的文件目录中运行一个脚本(我可以),然后在该脚本运行后运行一个命令(具有自己的界面)。
//create a new session
ssh_session mi = ssh_new();
if(mi == NULL)
{
return -1;
}
//set the options
ssh_options_set(mi, SSH_OPTIONS_HOST, "10.10.10.10");
ssh_options_set(mi, SSH_OPTIONS_PORT, &port);
ssh_options_set(mi, SSH_OPTIONS_USER, "root");
ssh_options_set(mi, SSH_OPTIONS_LOG_VERBOSITY, &verbosity);
//connect via ssh
rc = ssh_connect(mi);
if(rc != SSH_OK)
{
fprintf(stderr, "Error connecting to device: %s\n",
ssh_get_error(mi));
ssh_free(mi);
return 0;
}
rc = ssh_userauth_password(mi, NULL, "pass1234!");
if (rc != SSH_AUTH_SUCCESS)
{
fprintf(stderr, "Error authenticating with password: %s\n",
ssh_get_error(mi));
ssh_disconnect(mi);
ssh_free(mi);
exit(-1);
}
现在,我导航到该脚本并运行它:
rc = ssh_channel_request_exec(channel, "cd /sysro/bin; ./mtce-term; logout device");
if(rc != SSH_OK)
{
ssh_channel_close(channel);
ssh_channel_free(channel);
return rc;
}
./ mtce-term运行一次后,会弹出一个对话框,要求您输入一些内容(我提供但未读取)
->维护终端已连接...输入命令
这是我的代码的盲点,因为它无法与此终端交互。有什么线索可以解析最后一条命令吗?