Metadata-Version: 2.1
Name: python3-ssh
Version: 1.0.9
Summary: used to ssh to exe cmd or scp file
Home-page: https://gitee.com/devops_dev/ssh
Author: redrose2100
Author-email: hitredrose@163.com
Maintainer: redrose2100
Maintainer-email: hitredrose@163.com
License: MIT
Project-URL: Documentation, https://gitee.com/devops_dev/ssh/README.md
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Topic :: System :: Logging
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.3
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: paramiko
Requires-Dist: func_timeout
Requires-Dist: python3-log

# ssh
## 安装
```bash
pip3 install python3-ssh
```

## 用法
### is_sshable 用于判断服务器是否可以ssh
如下所示
```python
from ssh.ssh import SSHClient


if __name__ == '__main__':
    ssh = SSHClient(ip="192.168.1.2", port=22, username="root", password="xxxx")
    print(ssh.is_sshable)
```

执行结果：
```bash
True
```
其中在建立ssh连接时，默认超时时间为10秒，通常情况下，10超时时间是够了的，但当网络环境确实很差而且无法优化网络环境的情况下，也可以设置连接超时的，如下即将超时时间修改为30秒
```python
from ssh.ssh import SSHClient


if __name__ == '__main__':
    ssh = SSHClient(ip="192.168.1.2", port=22, username="root", password="xxxx",connect_timeout=30)
    print(ssh.is_sshable)
```
### wait_for_sshable 设置超时等待服务器可以ssh
* 对于新建的虚拟机，可以使用等待可以ssh，并可以设置超时，如下示例中 192.168.1.254 为一个不存在的虚拟机
```python
from ssh.ssh import SSHClient


if __name__ == '__main__':
    ssh = SSHClient(ip="192.168.1.2", port=22, username="root", password="Mugen_runner@123456")
    rs=ssh.wait_for_sshable(60)
    print(rs)
    ssh = SSHClient(ip="192.168.1.254", port=22, username="root", password="Mugen_runner@123456")
    rs = ssh.wait_for_sshable(60)
    print(rs)
```
执行结果为：
```bash
True
False
```
### exec 用于执行命令
* 执行一条简单的命令，并获取执行命令的返回码、标准输出和标准错误
远程执行一条简单的命令，比如 ls，调试时需要将ip地址和用户名密码修改为自己的调试环境的信息
```python
from ssh.ssh import SSHClient


if __name__ == '__main__':
    ssh = SSHClient(ip="192.168.1.2", port=22, username="root", password="xxxx")
    rs = ssh.exec("ls /")
    print(f"exit_status_code:{rs.exit_status_code}")
    print(f"stdout:{rs.stdout}")
    print(f"stderr:{rs.stderr}")
```
执行结果如下：
```bash
exit_status_code:0
stdout:afs
bin
boot
dev
etc
home
lib
lib64
lost+found
media
mnt
opt
proc
root
run
sbin
srv
sys
tmp
usr
var

stderr:
```

