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();
}
}
}