[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[no subject]
[Thread Prev] | [Thread Next]
- Subject:
- From: Raghaw Shukla <raghaw.wesee@xxxxxxxxx>
- Reply-to: libssh@xxxxxxxxxx
- Date: Mon, 20 Apr 2015 17:00:29 +0530
- To: libssh@xxxxxxxxxx
I using libssh to write command to remote PC.So its like (MY PC->Linux MAchine->Remote PC).iam able to to do port forwarding but when i try to exeute command let say ls -l its just wait . For refrence here is my code : void StartSession(){ int rc; m_host = "10.99.93.26"; m_user = "embadmin"; m_password = "#####"; m_port = 22; m_loggedIn = false; m_session = NULL; m_workingDirectory = "."; qRegisterMetaType<ConnectorWidget::SshError>("ConnectorWidget::SshError"); int verbosity = SSH_LOG_FUNCTIONS; m_session = ssh_new(); qDebug()<<"m_host.data()"<<m_host.toLatin1(); // set the pertinant ssh session options ssh_options_set(m_session, SSH_OPTIONS_HOST, m_host.toLatin1()); ssh_options_set(m_session, SSH_OPTIONS_USER, m_user.toLatin1()); ssh_options_set(m_session, SSH_OPTIONS_LOG_VERBOSITY, &verbosity); ssh_options_set(m_session, SSH_OPTIONS_PORT, &m_port); int connectionResponse = ssh_connect(m_session); qDebug()<<"connectionResponse"<<connectionResponse; // if connection is Successful keep track of connection info. if (connectionResponse == SSH_OK) { qDebug()<<"Connectede"; } else { qDebug()<<"Not Connected"; } rc = ssh_userauth_password(m_session,NULL,m_password.toUtf8().constData()); if ( rc == SSH_AUTH_SUCCESS) { qDebug()<<"Authenticated correctly"; } ssh_channel channel; channel = ssh_channel_new(m_session); if (channel == NULL) qDebug()<<"channel NULL"; rc = ssh_channel_open_session(channel); if (rc != SSH_OK) { ssh_channel_free(channel); } direct_forwarding(m_session); } void ConnectorWidget::direct_forwarding(ssh_session session) { char buffer[1024*1024]; int total=0; int lastshown=4096; ssh_channel forwarding_channel; forwarding_channel = ssh_channel_new(session);; int rc = ssh_channel_open_forward(forwarding_channel, "10.99.92.80", 2222, "10.99.91.27", 80); if (rc != SSH_OK) { ssh_channel_free(forwarding_channel); qDebug()<<"rc after port forwarding"; } rc = ssh_channel_request_exec(forwarding_channel, "cat > /dev/null"); if (rc < 0) { ssh_channel_close(forwarding_channel); ssh_disconnect(session); } while ((rc = ssh_channel_write(forwarding_channel, buffer, sizeof(buffer))) > 0) { total += rc; if(total/2 >= lastshown){ printf("written %llx\n", (long long unsigned int) total); lastshown=total; } if(total > LIMIT) break; } if (rc < 0) { printf("error : %s\n",ssh_get_error(session)); ssh_channel_close(forwarding_channel); ssh_disconnect(session); } ssh_channel_send_eof(forwarding_channel); ssh_channel_close(forwarding_channel); ssh_disconnect(session); } Can anybody tell whats wrong with this
Re: exec command trough ssh tunnel | Andreas Schneider <asn@xxxxxxxxxxxxxx> |