4

SSH経由で(SSH .NETクライアントライブラリを使用して)サーバーにリモート接続し、コマンド、主に「lpstat」などのプリンターに関するコマンドを実行できるように設計された非常に小さなC#プログラムを作成しています。ここまでは、Putty を使用して手動でチェックしていました (主にプリンターの状態)。これの一部を自動化したいと思います。Putty を使用して、user1 に接続し (接続直後にユーザー/パスワードの入力を求められた場合)、「sudo su - user2」を実行して lpstat などのコマンドを実行できるようにする必要がありました。

ここに問題があります。SSH .NET に接続すると、コマンド「sudo su -」で接続がフリーズするようです。なんで ?Serverfaultのこれと同じ問題でしょうか? user2 として接続する別の方法 (つまり、SSH .NET を別の方法で使用する) があれば、それで問題ありません。

重要事項:

  • user2 または root のパスワードがわからない
  • 本番サーバーです。私はその管理者ではなく、非常に上級の Unix ユーザーでもありません。そのサーバー構成を変更したくありません。
  • フリーズはパスワードを要求するコマンドに関係していると思いますが、よくわかりません。

私の現在のコード:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Renci.SshNet;
using System.IO;
using System.Threading;

namespace SSHChecker
{
    class Program
    {
        static void Main(string[] args)
        {
            SshClient sshClient = new SshClient(
                "IP",
                666, // port
                "user1",
                "user1Password");

            sshClient.Connect();
            SshCommand sshCommand;
            String res;

            //sshCommand = sshClient.RunCommand("ls d /"); // works fine
            sshCommand = sshClient.RunCommand("sudo su - user2"); // freezes ...
            sshCommand = sshClient.RunCommand("ls d /"); // ... so this code is never executed.

            sshClient.Disconnect();
        }
    }
}
4

2 に答える 2