mirror of
https://github.com/lollipopkit/flutter_server_box.git
synced 2025-12-17 07:14:28 +01:00
fix SSHClient.exec
This commit is contained in:
@@ -15,20 +15,34 @@ extension SSHClientX on SSHClient {
|
||||
{OnStd? onStderr, OnStd? onStdout, OnStdin? stdin}) async {
|
||||
final session = await execute(cmd);
|
||||
|
||||
if (onStderr != null) {
|
||||
await for (final data in session.stderr) {
|
||||
onStderr(data.string, session.stdin);
|
||||
}
|
||||
}
|
||||
final stdoutDone = Completer<void>();
|
||||
final stderrDone = Completer<void>();
|
||||
|
||||
if (onStdout != null) {
|
||||
await for (final data in session.stdout) {
|
||||
onStdout(data.string, session.stdin);
|
||||
}
|
||||
session.stdout.listen(
|
||||
(e) => onStdout(e.string, session.stdin),
|
||||
onDone: stdoutDone.complete,
|
||||
);
|
||||
} else {
|
||||
stdoutDone.complete();
|
||||
}
|
||||
|
||||
if (onStderr != null) {
|
||||
session.stderr.listen(
|
||||
(e) => onStderr(e.string, session.stdin),
|
||||
onDone: stderrDone.complete,
|
||||
);
|
||||
} else {
|
||||
stderrDone.complete();
|
||||
}
|
||||
|
||||
if (stdin != null) {
|
||||
stdin(session.stdin);
|
||||
}
|
||||
|
||||
await stdoutDone.future;
|
||||
await stderrDone.future;
|
||||
|
||||
session.close();
|
||||
return session.exitCode;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user