什么是Fabric?
Fabrci是一个python 工具,让你能够在python中 ssh 到目标主机然后执行命令
其实本质就是ssh , 和ansible 差不多,创建一个和目标主机的session ,然后执行任务,我们可以和jenkins结合起来然后通过jenkins来调用python脚本然后登陆远程服务器执行命令,不要问我为啥不直接让jenkins调用ansible,我也不知道,我就是是个写代码的,我懂个屁….
脚本如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
#!/usr/bin/python # vim: expandtab:tabstop=4:shiftwidth=4 ''' script ssh to host and run command ''' # Reason: disable invalid-name because pylint does not like our naming convention # pylint: disable=invalid-name import sys import argparse from fabric import Connection def connect_host(hostname, port, username, keyfile, commands): s = Connection( host=hostname, port=port, user=username, connect_kwargs={ 'key_filename': [keyfile] } ) s.run(commands) s.close() def main(): parser=argparse.ArgumentParser(description='''use fabric to connect host and run command ''') parser.add_argument('-i', '--hostname', required=True, help="IP or hostname you want to login") parser.add_argument('-p', '--port', default=22, help="hostPort you want to login") parser.add_argument('-u', '--username', required=True, help="username you want to login") parser.add_argument('-k', '--keyfile', required=True, help="ssh key you want to use to login") parser.add_argument('-c', '--commands', required=True, help="commands you want to run") args=parser.parse_args() print(args.keyfile) connect_host(args.hostname, args.port, args.username, args.keyfile, args.commands) if __name__ == "__main__": main() |
调用方式;
1 |
python3 fabric_example.py -i "test.com" -p 22 -u root -k "/home/abc/.ssh/id_rsa" -c date |
显示的结果:
1 |
Thu Mar 19 22:27:56 CST 2020 |
Latest posts by Zhiming Zhang (see all)
- aws eks node 自动化扩展工具 Karpenter - 8月 10, 2022
- ReplicationController and ReplicaSet in Kubernetes - 12月 20, 2021
- public key fingerprint - 5月 27, 2021