Struct async_ssh2_tokio::client::Client
source · pub struct Client { /* private fields */ }
Expand description
A ssh connection to a remote server.
After creating a Client
by connect
ing to a remote host,
use execute
to send commands and receive results through the connections.
§Examples
use async_ssh2_tokio::{Client, AuthMethod, ServerCheckMethod};
#[tokio::main]
async fn main() -> Result<(), async_ssh2_tokio::Error> {
let mut client = Client::connect(
("10.10.10.2", 22),
"root",
AuthMethod::with_password("root"),
ServerCheckMethod::NoCheck,
).await?;
let result = client.execute("echo Hello SSH").await?;
assert_eq!(result.stdout, "Hello SSH\n");
assert_eq!(result.exit_status, 0);
Ok(())
}
Implementations§
source§impl Client
impl Client
sourcepub async fn connect(
addr: impl ToSocketAddrsWithHostname,
username: &str,
auth: AuthMethod,
server_check: ServerCheckMethod
) -> Result<Self, Error>
pub async fn connect( addr: impl ToSocketAddrsWithHostname, username: &str, auth: AuthMethod, server_check: ServerCheckMethod ) -> Result<Self, Error>
Open a ssh connection to a remote host.
addr
is an address of the remote host. Anything which implements
ToSocketAddrsWithHostname
trait can be supplied for the address;
ToSocketAddrsWithHostname reimplements all of [ToSocketAddrs
];
see this trait’s documentation for concrete examples.
If addr
yields multiple addresses, connect
will be attempted with
each of the addresses until a connection is successful.
Authentification is tried on the first successful connection and the whole
process aborted if this fails.
sourcepub async fn connect_with_config(
addr: impl ToSocketAddrsWithHostname,
username: &str,
auth: AuthMethod,
server_check: ServerCheckMethod,
config: Config
) -> Result<Self, Error>
pub async fn connect_with_config( addr: impl ToSocketAddrsWithHostname, username: &str, auth: AuthMethod, server_check: ServerCheckMethod, config: Config ) -> Result<Self, Error>
Same as connect
, but with the option to specify a non default
russh::client::Config
.
pub async fn get_channel(&self) -> Result<Channel<Msg>, Error>
sourcepub async fn upload_file(
&self,
src_file_path: &str,
dest_file_path: &str
) -> Result<(), Error>
pub async fn upload_file( &self, src_file_path: &str, dest_file_path: &str ) -> Result<(), Error>
Upload a file with sftp to the remote server.
src_file_path
is the path to the file on the local machine.
dest_file_path
is the path to the file on the remote machine.
Some sshd_config does not enable sftp by default, so make sure it is enabled.
A config line like a Subsystem sftp internal-sftp
or
Subsystem sftp /usr/lib/openssh/sftp-server
is needed in the sshd_config in remote machine.
sourcepub async fn execute(
&self,
command: &str
) -> Result<CommandExecutedResult, Error>
pub async fn execute( &self, command: &str ) -> Result<CommandExecutedResult, Error>
Execute a remote command via the ssh connection.
Returns stdout, stderr and the exit code of the command,
packaged in a CommandExecutedResult
struct.
If you need the stderr output interleaved within stdout, you should postfix the command with a redirection,
e.g. echo foo 2>&1
.
If you dont want any output at all, use something like echo foo >/dev/null 2>&1
.
Make sure your commands don’t read from stdin and exit after bounded time.
Can be called multiple times, but every invocation is a new shell context.
Thus cd
, setting variables and alike have no effect on future invocations.
sourcepub fn get_connection_username(&self) -> &String
pub fn get_connection_username(&self) -> &String
A debugging function to get the username this client is connected as.
sourcepub fn get_connection_address(&self) -> &SocketAddr
pub fn get_connection_address(&self) -> &SocketAddr
A debugging function to get the address this client is connected to.