2011-12-15 2 views
3

J'essaie d'exécuter une commande UNIX sur un hôte distant à partir de mon application C#.En C# comment exécuter la commande unix sur le SSH distant à l'aide de TcpClient

J'ai vu divers post sur internet, y compris SO pour ce faire en utilisant diverses bibliothèques comme SmartSsh beaucoup d'autres. Et d'autres utilisant des commandes en ligne de commande.

Je ne souhaite utiliser aucune bibliothèque tierce.

J'ai donc essayé d'utiliser la classe TcpClient avec l'exemple montré ici sur MSDN. Je passe le nom d'hôte en tant que: utilisateur @ servername et le port . Quand je lance ce code, il trows une exception

SocketException (0x80004005): No such host is known 
at System.Net.Sockets.TcpClient..ctor(String hostname, Int32 port) 

Est-ce parce que mon serveur/hôte attendre un mot de passe pour l'utilisateur, si oui, alors comment puis-je fournir cela?

+0

J'ai essayé de rechercher des questions existantes comme ceci, mais je n'ai pas pu atteindre à droite. S'il s'agit d'un doublon, veuillez me rediriger vers l'endroit correct. Merci. – Maheep

+3

Une socket ne concerne qu'une connexion, voyez-la comme si vous appeliez une personne par téléphone. Le socket s'assure que vous avez une connexion avec l'autre personne mais vous avez toujours besoin d'une langue (protocole) pour communiquer. Au téléphone, c'est un langage commun. Lorsque vous voulez exécuter des commandes Unix, vous avez également besoin d'une langue que vous et la cible comprenez. SSH, port 22. SSH définit également l'authentification, donc vous devez implémenter le protocole SSH ou mieux, utilisez une bibliothèque de 3ème partie pour le faire pour vous – Polity

+0

@Polity: Merci pour cette bonne explication de ce que j'étais manquant et cela aussi dans le langage le plus simple. – Maheep

Répondre

2

Une socket ne concerne qu'une connexion, voyez-la comme l'appel d'une personne par téléphone. Le socket s'assure que vous avez une connexion avec l'autre personne mais vous avez toujours besoin d'une langue (protocole) pour communiquer. Au téléphone, c'est un langage commun. Lorsque vous voulez exécuter des commandes Unix, vous avez également besoin d'une langue que vous et la cible comprenez. SSH, port 22. SSH définit également l'authentification, vous devez donc implémenter le protocole SSH ou mieux, utiliser une bibliothèque de 3ème partie pour le faire pour vous

+0

Pouvez-vous s'il vous plaît suggérer très léger. Net bibliothèque pour cette tâche. Je veux seulement exécuter une commande UNIX très simple, donc je n'ai pas besoin d'un très gros outil. – Maheep

+1

Juste google autour d'un peu, j'ai trouvé http://www.codeproject.com/KB/IP/sharpssh.aspx et http://www.routrek.co.jp/en/product/varaterm/granados.html les deux gratuitement et simple. – Polity

Questions connexes