[C++] Jak dodać zmienną do system()

Witam serdecznie,

chciałem napisać pewien program co będzie otwierać putty z wcześniej zdefiniowanym adresem IP, lecz za żadne skarby nie działają zmienne w system().

Istnieje jakiś sposób, aby dało się wykonać to co chcę?

Dodatkowo, jak zrobić, aby wpisać komendy do putty z wcześniej zdefiniowanego formularza?

Tzn. podaje adres IP, wartość 1, wartość 2, następnie włącza się putty z podanym ip, wpisuję hasło, a następnie wykonuje w/w wartości?

No chyba, że łatwiej było by to zrobić w Delphi to się go poduczę, choć sprawa jest pilna :frowning:

Windows Xp Sp3, DevC++

Jeśli masz już coś napisane to pomogę, jeśli pisać od podstaw to za pewną sumkę mogę napisać taki program :wink:

Raczej, chciałbym by tylko ktoś mnie nakierował, albo coś doradził…

Dodane 27.03.2009 (Pt) 15:23

Mam taki kod:

#include 


int main(int argc,char *argv[])

{

    int channel1, i;

    const char* result;

    ne7ssh *_ssh = new ne7ssh();



    _ssh->setOptions ("aes192-cbc", "hmac-md5");



    channel1 = _ssh->connectWithPassword ("192.168.1.103", "root", "alpine");

_ssh->send ("netstat -na\n", channel1)



    delete _ssh;

    return EXIT_SUCCESS;

}

jednak hasło muszę i tak ręcznie wprowadzać przez co plecenie netstat -na\n już sie nie wykonuje :frowning: jakaś pomoc?

Dodam, że łączę się z iPhone

Kompletny strzał. Zamiast LF ("\n") spróbuj pełnej sekwencji CR LF ("\r\n"). Pojęcia nie mam czy coś da, natomiast wiem, że w wielu przypadkach oczekiwane są dwa bajty zamiast jednego…

akurat to był tylko przykład polecenia, obojętnie co nie podam, czy to ls. Po prostu chyba przez to powtórne wpisanie hasła reszta jest ignorowana.

Nie znam tej biblioteki. Może trzeba badać co zwracają funkcje? Jak znam życie jakieś komunikaty o błędach można pewnie uzyskać…

Rzut oka na google i oto mamy (po pierwsze trzeba poczekać na terminal :))

// Initiate a connection.

        channel1 = _ssh-connectWithPassword ("remoteHost", 22, "remoteUsr", "password", true, 30);

        if (channel1 0)

        {

            const char *errmsg = _ssh-errors()-pop();

            if (errmsg == NULL)

                errmsg = "";

            printf ("Thread1. Connection failed with last error: %s\n\n", errmsg);

            continue;

        }


        // Wait for bash prompt, or die in 5 seconds.

        if (!_ssh-waitFor (channel1, " $", 5))

        {

            const char *errmsg = _ssh-errors()-pop(channel1);

            if (errmsg == NULL)

                errmsg = "";

            printf ("Failed while waiting for remote shell wiht last error: %s\n\n", errmsg);

            _ssh-close(channel1);

            continue;

        }


        // Send "ls" command.

        if (!_ssh-send ("ls -al\n", channel1))

        {

            const char *errmsg = _ssh-errors()-pop(channel1);

            if (errmsg == NULL)

                errmsg = "";

            printf ("Could not send the command. Last error: %s\n\n", errmsg);

            _ssh-close(channel1);

            continue;

        }

Ehh… teraz odpaliłem poprzedni pik i biblioteka nie działa :frowning:

Dlaczego wcześniej dzialało, a teraz, że z includowanej biblitoeki plik /botan/bulid.h nie istenieje?

A może jest jakis innny sposób na ssh z telefonem, może inna biblioteka?