pub struct ClienteSsh {
pub sessao: Handle<ManipuladorCliente>,
/* private fields */
}ssh-real only.Expand description
Cliente SSH ativo com sessão autenticada.
Fields§
§sessao: Handle<ManipuladorCliente>Sessão SSH autenticada para operações de baixo nível.
Implementations§
Source§impl ClienteSsh
impl ClienteSsh
Sourcepub async fn conectar(cfg: ConfiguracaoConexao) -> ResultadoSshCli<Self>
pub async fn conectar(cfg: ConfiguracaoConexao) -> ResultadoSshCli<Self>
Conecta e autentica. Todo o fluxo (TCP + handshake + auth) respeita
o timeout_ms da configuração.
§Erros
ErroSshCli::ArgumentoInvalidose a configuração for inválida.ErroSshCli::TimeoutSshse exceder o timeout total.ErroSshCli::ConexaoFalhouem falhas TCP/handshake.ErroSshCli::AutenticacaoFalhouse o servidor rejeitar senha/chave (tente--key,--password-stdinou--key-passphrase-stdin).
Sourcepub async fn executar_comando(
&mut self,
comando: &str,
max_chars: usize,
stdin_data: Option<Vec<u8>>,
) -> ResultadoSshCli<SaidaExecucao>
pub async fn executar_comando( &mut self, comando: &str, max_chars: usize, stdin_data: Option<Vec<u8>>, ) -> ResultadoSshCli<SaidaExecucao>
Executa um comando shell remoto e captura stdout/stderr em paralelo.
Trunca cada stream em max_chars codepoints UTF-8. Respeita o
timeout_ms da configuração para a execução inteira.
§Erros
ErroSshCli::CanalFalhouem falha ao abrir canal ou enviarexec.ErroSshCli::TimeoutSshse exceder o timeout.
Sourcepub async fn upload(
&mut self,
local: &Path,
remote: &Path,
) -> ResultadoSshCli<TransferenciaResultado>
pub async fn upload( &mut self, local: &Path, remote: &Path, ) -> ResultadoSshCli<TransferenciaResultado>
Upload de arquivo local para remote via SCP (protocolo OpenSSH sink).
One-shot: stream em chunks (sem carregar o arquivo inteiro em RAM).
§Erros
ErroSshCli::ArquivoNaoEncontradose o arquivo local não existir.ErroSshCli::ArgumentoInvalidose o path local não for arquivo regular.ErroSshCli::CanalFalhouem falha ao abrir canal SCP / status remoto.ErroSshCli::TimeoutSshse exceder o timeout.
Sourcepub async fn download(
&mut self,
remote: &Path,
local: &Path,
) -> ResultadoSshCli<TransferenciaResultado>
pub async fn download( &mut self, remote: &Path, local: &Path, ) -> ResultadoSshCli<TransferenciaResultado>
Download de arquivo remote para local via SCP (protocolo OpenSSH source).
Escreve em {local}.ssh-cli.partial e faz rename atômico (SCP-022).
§Erros
ErroSshCli::Iose não conseguir escrever o arquivo local.ErroSshCli::CanalFalhouem falha ao abrir canal SCP / status remoto.ErroSshCli::TimeoutSshse exceder o timeout.
Sourcepub async fn desconectar(&self) -> ResultadoSshCli<()>
pub async fn desconectar(&self) -> ResultadoSshCli<()>
Encerra a sessão SSH de forma limpa.
§Erros
Propaga falha se disconnect retornar erro do transporte.
Sourcepub async fn abrir_canal_tunel(
&self,
host_remoto: &str,
porta_remota: u16,
endereco_origem: &str,
porta_origem: u16,
) -> ResultadoSshCli<Box<dyn CanalTunel>>
pub async fn abrir_canal_tunel( &self, host_remoto: &str, porta_remota: u16, endereco_origem: &str, porta_origem: u16, ) -> ResultadoSshCli<Box<dyn CanalTunel>>
Abre canal direct-tcpip para forwarding SSH.
Trait Implementations§
Source§impl ClienteSshTrait for ClienteSsh
impl ClienteSshTrait for ClienteSsh
Source§fn conectar<'async_trait>(
cfg: ConfiguracaoConexao,
) -> Pin<Box<dyn Future<Output = Result<Box<Self>, ErroSshCli>> + Send + 'async_trait>>where
Self: 'async_trait,
fn conectar<'async_trait>(
cfg: ConfiguracaoConexao,
) -> Pin<Box<dyn Future<Output = Result<Box<Self>, ErroSshCli>> + Send + 'async_trait>>where
Self: 'async_trait,
Source§fn executar_comando<'life0, 'life1, 'async_trait>(
&'life0 mut self,
cmd: &'life1 str,
max_chars: usize,
stdin_data: Option<Vec<u8>>,
) -> Pin<Box<dyn Future<Output = Result<SaidaExecucao, ErroSshCli>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn executar_comando<'life0, 'life1, 'async_trait>(
&'life0 mut self,
cmd: &'life1 str,
max_chars: usize,
stdin_data: Option<Vec<u8>>,
) -> Pin<Box<dyn Future<Output = Result<SaidaExecucao, ErroSshCli>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Source§fn upload<'life0, 'life1, 'life2, 'async_trait>(
&'life0 mut self,
local: &'life1 Path,
remote: &'life2 Path,
) -> Pin<Box<dyn Future<Output = Result<TransferenciaResultado, ErroSshCli>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn upload<'life0, 'life1, 'life2, 'async_trait>(
&'life0 mut self,
local: &'life1 Path,
remote: &'life2 Path,
) -> Pin<Box<dyn Future<Output = Result<TransferenciaResultado, ErroSshCli>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Source§fn download<'life0, 'life1, 'life2, 'async_trait>(
&'life0 mut self,
remote: &'life1 Path,
local: &'life2 Path,
) -> Pin<Box<dyn Future<Output = Result<TransferenciaResultado, ErroSshCli>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn download<'life0, 'life1, 'life2, 'async_trait>(
&'life0 mut self,
remote: &'life1 Path,
local: &'life2 Path,
) -> Pin<Box<dyn Future<Output = Result<TransferenciaResultado, ErroSshCli>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Source§fn abrir_canal_tunel<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
host_remoto: &'life1 str,
porta_remota: u16,
endereco_origem: &'life2 str,
porta_origem: u16,
) -> Pin<Box<dyn Future<Output = Result<Box<dyn CanalTunel>, ErroSshCli>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn abrir_canal_tunel<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
host_remoto: &'life1 str,
porta_remota: u16,
endereco_origem: &'life2 str,
porta_origem: u16,
) -> Pin<Box<dyn Future<Output = Result<Box<dyn CanalTunel>, ErroSshCli>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
direct-tcpip para forwarding de tunnel.