#include "ksshprocess.h" #include <iostream> using namespace std; int main(int argc, char *argv[]) { if( argc < 5 ) { cout << "Usage: " << argv[0] << " <ssh path> <host> <username> <password>" << endl; return 1; } KSshProcess ssh(argv[1]); cout << ssh.version() << endl; KSshProcess::SshOptList opts; KSshProcess::SshOpt opt; opt.opt = KSshProcess::SSH_PORT; opt.num = 22; opts.append(opt); opt.opt = KSshProcess::SSH_HOST; opt.str = TQString(argv[2]); opts.append(opt); opt.opt = KSshProcess::SSH_USERNAME; opt.str = TQString(argv[3]); opts.append(opt); // opt.opt = KSshProcess::SSH_PASSWD; // opt.str = TQString(argv[4]); // opts.append(opt); if( !ssh.setOptions(opts) ) { cout << "ksshprocesstest: setOptions failed" << endl; return -1; } ssh.printArgs(); bool stop = false; bool connected; char buf[256]; char c; while( !stop && !(connected = ssh.connect()) ) { cout << "ksshprocesstest: Error num - " << ssh.error() << endl; cout << "ksshprocesstest: Error msg - " << ssh.errorMsg().latin1() << endl; switch( ssh.error() ) { case KSshProcess::ERR_NEED_PASSWD: case KSshProcess::ERR_NEED_PASSPHRASE: cout << "Password: "; cin >> buf; cout << "password is " << buf << endl; ssh.setPassword(TQString(buf)); break; case KSshProcess::ERR_NEW_HOST_KEY: case KSshProcess::ERR_DIFF_HOST_KEY: cout << "Accept host key? (y/n): "; cin >> c; cout << "Answered " << c << endl; ssh.acceptHostKey(c == 'y' ? true : false); break; case KSshProcess::ERR_AUTH_FAILED: cout << "ksshprocesstest: auth failed." << endl; stop = true; break; case KSshProcess::ERR_AUTH_FAILED_NEW_KEY: cout << "ksshprocesstest: auth failed because of new key." << endl; stop = true; break; case KSshProcess::ERR_AUTH_FAILED_DIFF_KEY: cout << "ksshprocesstest: auth failed because of changed key." << endl; stop = true; break; case KSshProcess::ERR_INTERACT: case KSshProcess::ERR_INTERNAL: case KSshProcess::ERR_UNKNOWN: case KSshProcess::ERR_INVALID_STATE: case KSshProcess::ERR_CANNOT_LAUNCH: case KSshProcess::ERR_HOST_KEY_REJECTED: cout << "ksshprocesstest: FATAL ERROR" << endl; stop = true; break; } } if( connected ) { cout << "ksshprocesstest: Successfully connected to " << argv[2] << endl; } else { cout << "ksshprocesstest: Connect to " << argv[2] << " failed." << endl; } }