LibSSH:与会话中的脚本/ bash交互

时间:2018-07-27 09:17:26

标签: c++ visual-studio-2010 ssh libssh

我正在使用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运行一次后,会弹出一个对话框,要求您输入一些内容(我提供但未读取)

  

->维护终端已连接...输入命令

这是我的代码的盲点,因为它无法与此终端交互。有什么线索可以解析最后一条命令吗?

0 个答案:

没有答案