Mac OS SSH/SFTP的Python脚本

以前在windows系统下面使用xshell来管理阿里云上的服务器,winscp来上传网站的资料,由于winscp使用的私钥必须是.ppk格式,而xshell使用普通的私钥,每次都要用putty工具来转换,很麻烦。后来使用xftp来替代winscp,xftp和xshell使用同样的私钥,这套组合在windows平台上面管理服务器非常方便,推荐使用。

然而Mac OS上面,没有这个套工具,由于Terminal可以直接使用sftp和ssh命令,用来管理阿里云服务器也很不错。但是,管理多态服务器非常麻烦,最好脚本统一管理。因此我设计的脚本具有如下功能:

  1. 同一个命令可以用于ssh连接或者sftp连接
  2. 一个脚本最好能管理所有的服务器
  3. 脚本能够展示所有可用的服务器,方便选择
  4. 要有良好的帮助信息

最终的命令格式如下:

  1. sshlink -l展示所有可以用的服务器名
  2. sshlink -h或者sshlink --help显示帮助信息
  3. sshlink -s server_name表示使用ssh协议连接服务器
  4. sshlink -f server_name表示使用sftp协议连接服务器

代码如下,注意:代码中隐藏了关键的IP信息,请自行修改:

#! /usr/bin/env python
# -*- coding: utf-8 -*-

"""
作用:‘sshlink -[lsfh] severName‘命令对服务器进行访问
arg参数如下:
-l: 显示可用的服务器名字
-s: 使用ssh命令进行连接服务器
-f: 使用sftp命令进行连接服务器
-h: 显示帮助信息
--help: 显示帮助信息
"""

import sys
import os

argv = sys.argv
BASE_URL = ‘/Users/HomePath/.ssh/‘      # 存放私钥的路径

serverName = {
    ‘server1‘: (‘ip1‘, ‘server1.key‘),
    ‘server2‘: (‘ip2‘, ‘server2.key‘),
}

def sshlink():
    if len(argv) == 1:    # 没有参数的时候显示帮助信息
        print __doc__
    elif argv[1] == ‘-l‘:    # 显示所有的可用服务器名
        print ‘Servers can be used: ‘, ‘ ‘.join(serverName.keys())
    elif argv[1] == ‘-s‘:    # 使用ssh进行连接
        if len(argv) == 3 and argv[2] and argv[2] in serverName:
            sshcmd = list()
            sshcmd.append(‘ssh [email protected]‘ + serverName[argv[2]][0])
            sshcmd.append(‘-i‘)
            sshcmd.append(os.path.join(BASE_URL, serverName[argv[2]][1]))
            os.system(‘ ‘.join(sshcmd))
        else:
            print "Need Server Name: ", ‘ ‘.join(serverName.keys())
    elif argv[1] == ‘-f‘:    #使用sftp进行连接
        if len(argv) == 3 and argv[2] and argv[2] in serverName:
            sftpcmd = list()
            sftpcmd.append(‘sftp -i‘)
            sftpcmd.append(os.path.join(BASE_URL, serverName[argv[2]][1]))
            sftpcmd.append(‘[email protected]‘ + serverName[argv[2]][0])
            os.system(‘ ‘.join(sftpcmd))
        else:
            print "Need Server Name: ", ‘ ‘.join(serverName.keys())
    elif argv[1] == ‘--help‘ or argv[1] == ‘-h‘:
        print __doc__
        print "Servers can be used: ", ‘ ‘.join(serverName.keys())
    else:
        print "Only support -l, -s, -f, --help"

if __name__ == ‘__main__‘:
    sshlink()

使用sudo ln -s在系统路径中建立一个软连接,并且赋予执行权限sudo chmod 700 sshlink,然后就可以正常使用命令了。如果需要增加服务器,那么就修改该代码中的ServerName字典,然后就能正常使用。

时间: 2024-08-29 10:14:59

Mac OS SSH/SFTP的Python脚本的相关文章

Mac OS生成随机密码的Python脚本

很多时候在注册一些比较重要的帐号,或者使用一些比较重要的接口的时候,需要使用到随机字符串,为了方便,我们设计这个脚本需要注意以下几点: 我们的密码字符主要从0-9/A-Z/a-z这些字符中随机获取.为了避免显示混淆,我们去除字符中的数字0和字母o以及数字1和字母l. 命令不带参数的情况默认产生16个字符的随机密码 命令可以带一个参数,表明需要产生的随机密码的长度 要把密码打印到Terminal上,同时需要把随机密码发送到剪切板,方便粘贴使用 把命令放置到系统系统路径下面,方便直接使用命令. 代码

Mac OS X 下安装python的MySQLdb模块

参考资料: mac os x下python安装MySQLdb模块   http://www.codeif.com/post/1073/ MAC OSX使用Python安装模块有关问题  http://www.myexception.cn/operating-system/1616547.html 在Mac OS X 中安装好了MySQL和Django,在Django中访问MySQL数据库时,提示“ImportError: No module named MySQLdb”,是由于没有安装Pytho

在mac OS X中配置python mysql开发环境

1. 首先要下载安装mysql,下载地址: http://cdn.mysql.com/Downloads/MySQL-5.6/mysql-5.6.19.tar.gz 解压: tar -xzvf mysql-5.6.19.tar.gz 然后下载gmock,编译mysql时需要用到: https://googlemock.googlecode.com/files/gmock-1.7.0.zip 解压到指定目录 <span style="font-size:14px;">unzi

Mac OS X中搭建Python科学计算环境

这个日志也是参考了几位网友的经验(例如这篇日志:http://blog.csdn.net/waleking/article/details/7578517).他们推荐使用Mac Ports这样的软件来管理和安装所有的安装包.按照这里的教程:http://www.macports.org/install.php,需要首先安装Xcode,如果下载网速不好的话,使用浏览器下载可能需要数个小时.这里建议国内的朋友试试迅雷之类的离线下载,可以加速很多.安装好Mac Ports之后,在终端中输入: port

让Mac OS X系统启动时执行脚本

公司购买了Zoho公司的资产管理软件 AssetExplorer,该资产管理软件可以通过在客户机电脑上安装Agent客户端软件收集客户机的硬件及软件信息.公司有若干台iMac电脑,运 行的是Mac OS X 10.6的系统,由于AssetExplorer只支持Windows版本的Agent,对于其他系统的计算机需要通过在客户端执行bash脚本文件的方 式,收集客户机的信息并上传到服务器.这就要求客户机的Mac OS X系统启动的时候能够自动执行脚本程序,而且要基于系统服务层面,用户无需登录,脚本

Mac OS X在建筑Python科学计算环境

经验(比如这篇日志:http://blog.csdn.net/waleking/article/details/7578517).他们推荐使用Mac Ports这种软件来管理和安装全部的安装包.依照这里的教程:http://www.macports.org/install.php,须要首先安装Xcode.假设下载网速不好的话,使用浏览器下载可能须要数个小时.这里建议国内的朋友试试迅雷之类的离线下载,能够加速非常多.安装好Mac Ports之后,在终端中输入: port search networ

mac os 使用pyenv管理python多版本

1 安装pyenv brew install pyenv 2配置~/bash_profile export PYENV_ROOT="$HOME/.pyenv" export PATH="$PYENV_ROOT/bin:$PATH" eval "$(pyenv init -)" 3让新增的配置项生效 source ~/.bash_profile 4测试一下是否安装好 并查看能安装的版本 pyenv install -l 5安装python3 我当前

解决 Mac OS SSH 登陆 Linux 出现中文乱码问题

原理: 都用utf-8. 方法: terminal中: LANG=zh_CN.UTF-8 export LANG terminal preference 中的encoding改成utf-8 关掉terminal, 重新连接

[Python Fabric] [SSH] Mac OS X 10.9 + Vagrant虚拟环境使用Python Fabric进行SSH远程登录的简单实验

1. ssh客户端生成key 1 $ ssh-keygen -t rsa -b 4096 2 Generating public/private rsa key pair. 3 Enter file in which to save the key (/Users/(username)/.ssh/id_rsa): vagrantid_rsa 4 Enter passphrase (empty for no passphrase): 5 Enter same passphrase again: 6