Hallo,
Ik ben sinds een 4-tal dagen begonnen met C# in plaats van VB omwille van het feit dat er veel meer ondersteuning is en je er meer mee kan. Ik probeer een programma te schrijven om via SSH een terminal op te zetten.
Om dit te doen maak ik gebruik van de OpenSource SSH bibliotheek ShaprSsh van Tamir Gal, dat leek me veel simpeler dan de Grandados bibiliotheek te gebruiken. Ik heb het al zover gekregen dat ik perfect kan verbinden en ook de verbinding verbreken met de gewenste doelhost, gebruikersnaam en paswoord.
Ik krijg echter enkel output naar een Console gestuurd (alle examples zijn Console software) ik wil echter voor mijn applicatie een GUI en ik wil dus dat de OuputStream naar een Textbox geschreven wordt. En daar zit mijn probleem.
Dit is mijn code:
[code=C#]
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Tamir.SharpSsh.jsch;
using Tamir.Streams;
using System.Text.RegularExpressions;
using System.IO;
namespace WindowsFormsApplication1
{
public partial class index : Form
{
private Session session;
private Channel channel;
private Stream m_in;
private Stream m_out;
public index()
{
InitializeComponent();
}
private void index_Load(object sender, EventArgs e)
{
this.toolStripStatusLabel1.Text = ("Wacht op gebruikersinvoer");
m_in = channel.getInputStream();
m_out = channel.getOutputStream();
}
private void verbind_Click(object sender, EventArgs e)
{
try
{
//een nieuwe JSch instantie creeëren
JSch jsch = new JSch();
//gebruikernaam en paswoord in de variabelen steken
String host = IP.Text;
String user = gebruikersnaam.Text;
String passwd = wachtwoord.Text;
//een nieuwe SSH sessie opstarten
session = jsch.getSession(user, host, 22);
//wachtwoord instellen
session.setPassword(passwd);
//wij zullen geen strikte RSA sleutel gebruiken
System.Collections.Hashtable config = new System.Collections.Hashtable();
config.Add("StrictHostKeyChecking", "no");
session.setConfig(config);
//verbinden met SSH server
session.connect();
//een nieuw Shell kanaal openen in de SSH sessie
channel = session.openChannel("shell");
[u][b] //Streams instellen
channel.setOutputStream(Console.OpenStandardOutput());[/b][/u]
//verbinen met het kanaal
channel.connect();
MessageBox.Show("Verbonden met de host!");
this.toolStripStatusLabel1.Text = ("Verbonden met de host");
}
catch (Exception ee)
{
MessageBox.Show(ee.Message);
}
}
private void disconnect_Click(object sender, EventArgs e)
{
try
{
//het kanaal sluiten
channel.disconnect();
session.disconnect();
this.toolStripStatusLabel1.Text = ("Verbinding met host verbroken");
}
catch(Exception eee)
{
MessageBox.Show(eee.Message);
}
}
private void index_Load_1(object sender, EventArgs e)
{
}
}
}
[/ code]
het vette en onderlijnde gedeelte zegt dus dat de OutputStream naar een Console geschreven moet worden, ik wil echter dat het naar een textbox gaat.
Ik heb al vanalles geprobeerd maar als het al geen errors geeft bij het builden van de applicatie dan loopt de applicatie bij het verbinden (als de eerste data ontvangen wordt) gewoon vast.
Ik hoop dat er een oplossing voor is,
Mvg,
Laserfreak
Ik ben sinds een 4-tal dagen begonnen met C# in plaats van VB omwille van het feit dat er veel meer ondersteuning is en je er meer mee kan. Ik probeer een programma te schrijven om via SSH een terminal op te zetten.
Om dit te doen maak ik gebruik van de OpenSource SSH bibliotheek ShaprSsh van Tamir Gal, dat leek me veel simpeler dan de Grandados bibiliotheek te gebruiken. Ik heb het al zover gekregen dat ik perfect kan verbinden en ook de verbinding verbreken met de gewenste doelhost, gebruikersnaam en paswoord.
Ik krijg echter enkel output naar een Console gestuurd (alle examples zijn Console software) ik wil echter voor mijn applicatie een GUI en ik wil dus dat de OuputStream naar een Textbox geschreven wordt. En daar zit mijn probleem.
Dit is mijn code:
[code=C#]
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Tamir.SharpSsh.jsch;
using Tamir.Streams;
using System.Text.RegularExpressions;
using System.IO;
namespace WindowsFormsApplication1
{
public partial class index : Form
{
private Session session;
private Channel channel;
private Stream m_in;
private Stream m_out;
public index()
{
InitializeComponent();
}
private void index_Load(object sender, EventArgs e)
{
this.toolStripStatusLabel1.Text = ("Wacht op gebruikersinvoer");
m_in = channel.getInputStream();
m_out = channel.getOutputStream();
}
private void verbind_Click(object sender, EventArgs e)
{
try
{
//een nieuwe JSch instantie creeëren
JSch jsch = new JSch();
//gebruikernaam en paswoord in de variabelen steken
String host = IP.Text;
String user = gebruikersnaam.Text;
String passwd = wachtwoord.Text;
//een nieuwe SSH sessie opstarten
session = jsch.getSession(user, host, 22);
//wachtwoord instellen
session.setPassword(passwd);
//wij zullen geen strikte RSA sleutel gebruiken
System.Collections.Hashtable config = new System.Collections.Hashtable();
config.Add("StrictHostKeyChecking", "no");
session.setConfig(config);
//verbinden met SSH server
session.connect();
//een nieuw Shell kanaal openen in de SSH sessie
channel = session.openChannel("shell");
[u][b] //Streams instellen
channel.setOutputStream(Console.OpenStandardOutput());[/b][/u]
//verbinen met het kanaal
channel.connect();
MessageBox.Show("Verbonden met de host!");
this.toolStripStatusLabel1.Text = ("Verbonden met de host");
}
catch (Exception ee)
{
MessageBox.Show(ee.Message);
}
}
private void disconnect_Click(object sender, EventArgs e)
{
try
{
//het kanaal sluiten
channel.disconnect();
session.disconnect();
this.toolStripStatusLabel1.Text = ("Verbinding met host verbroken");
}
catch(Exception eee)
{
MessageBox.Show(eee.Message);
}
}
private void index_Load_1(object sender, EventArgs e)
{
}
}
}
[/ code]
het vette en onderlijnde gedeelte zegt dus dat de OutputStream naar een Console geschreven moet worden, ik wil echter dat het naar een textbox gaat.
Ik heb al vanalles geprobeerd maar als het al geen errors geeft bij het builden van de applicatie dan loopt de applicatie bij het verbinden (als de eerste data ontvangen wordt) gewoon vast.
Ik hoop dat er een oplossing voor is,
Mvg,
Laserfreak
Liefhebber van embedded hardware en software