Как обработать срок действия пароля в SSH.net
Я использую SSH.net для подключения к своему Linux. Срок действия пароля истекает каждые 30 дней. Одним из требований является автоматический сброс пароля.
Но это не удалось.
В response.error всегда указана ошибка "ПРЕДУПРЕЖДЕНИЕ. Срок действия вашего пароля истек.\ N Изменение пароля требуется, но TTY недоступен.\ N"
Пример кода, как показано ниже
class Program { String host = "host"; int port = 22; String username = "user"; String password = "passwd"; String newpassword = "newpasswd";
PasswordConnectionInfo connectionInfo;
void HandlePasswordExpired(Object sender, AuthenticationPasswordChangeEventArgs e)
{
e.NewPassword = UTF8Encoding.UTF8.GetBytes(newpassword);
}
void Init()
{
connectionInfo = new PasswordConnectionInfo(host, username, password);
connectionInfo.PasswordExpired += HandlePasswordExpired;
}
void TestConnection()
{
try
{
using (var client = new SshClient(connectionInfo))
{
client.Connect();
var resp = client.RunCommand("ls -l /");
Console.WriteLine("Resp -> {0}", resp.Result);
client.Disconnect();
}
}
catch (Exception e)
{
Console.WriteLine(e);
}
}
static void Main(string[] args)
{
Program prog = new Program();
prog.Init();
prog.TestConnection();
}
}