- 浏览: 388554 次
- 性别:
- 来自: 北京
最新评论
-
wdhui128:
楼主牛逼
curl使用方法 -
taa199:
哇 curl实在是太强了
curl使用方法 -
nop:
3Q~ 解决了!
freemind中文方框解决 -
lijunjie:
zwwspace 写道这个方法好像搞不定啊怎么搞不定我就是这样 ...
使用webview.copyBackForwardList()来进行判断是否是在当前页打开的链接 -
zwwspace:
这个方法好像搞不定啊
使用webview.copyBackForwardList()来进行判断是否是在当前页打开的链接
ubuntu下的ssh客户端一直没找到象SecureCRT那样好用的工具。用ssh登录,每次都要输入密码,感觉很麻烦,而且因为字符集不相同,一般还有乱码问题,所以参照网上的一些实现自己也通过python来实现了一下。
#1.通过参数自动登录ssh远程服务器
#2.通过配置字符集解决中文乱码问题
#3.解决改变远程窗口默认较小bug,远程窗口同本地窗口大小动态改变未处理
#4.实现2级代理
#5.可以使用sftp登录来传文件(sftp,目前不能实现代理来作)
配置文件host.properties
第一列可以为id,第二列为用户名,第一列为密码,第四列为远程服务器字符集
登录脚本
#1.通过参数自动登录ssh远程服务器
#2.通过配置字符集解决中文乱码问题
#3.解决改变远程窗口默认较小bug,远程窗口同本地窗口大小动态改变未处理
#4.实现2级代理
#5.可以使用sftp登录来传文件(sftp,目前不能实现代理来作)
配置文件host.properties
第一列可以为id,第二列为用户名,第一列为密码,第四列为远程服务器字符集
#userid:user:password:characters ljj51:ljj:123456:gbk
登录脚本
#!/usr/bin/env python #coding:UTF-8 #1.通过参数自动登录ssh远程服务器 #2.通过配置字符集解决中文乱码问题 #3.解决改变远程窗口默认较小bug,远程窗口同本地窗口大小动态改变未处理 #4.实现2级代理 import os,sys,pexpect,string import struct,fcntl,termios,signal try: import pexpect except: print "你没有pexpect包,试试sudo apt-get install python-pexpect" sys.exit(0) def sigwinch_passthrough(sig,data): """窗口改动后,自动返回当前窗口值,以便跟远程窗口同步,目前有问题""" s=struct.pack("HHHH",0,0,0,0) a=struct.pack('hhhh',fcntl.ioctl(sys.stdout.fileno(),termios.TIOCGWINSZ,s)) #global columns,lines """ self.lines=a[0] self.columns=a[1] print "resize windows size(%s,%s)"%(self.lines,self.columns) """ print a[0],a[1] class SimpleSsh: def __init__(self): self.columns=125 self.lines=37 self.base="~/ssh/" self.filename="host.properties" def createSshUrl(self,paramap): user=paramap["user"] password=paramap["password"] host=paramap["host"] characters=paramap["characters"] conntype=paramap["conntype"] url="luit -encoding "+characters+" "+conntype+" "+user+"@"+host print "#"*40 print "#",string.center(string.join((user,"@",host," by ",characters),""),36),"#" print "#",string.center("created by lijunjieone@gmail.com",36),"#" print "#"*40 return url,password def connection(self,url,password): """ """ columns=self.columns lines=self.lines try: p=pexpect.spawn(url) try: #signal.signal(signal.SIGWINCH,sigwinch_passthrough) p.setwinsize(lines,columns) print "resize windows(%s,%s)"%(columns,lines) except: pass p.expect("password:") p.sendline(password) p.interact() except: print "connection close()" def argv2map(self,userid,host,conntype): paramap={} base=self.base filename=self.filename tmp="" try: file=open(filename,"r") except: file=open(string.join(base,filename)) content=file.readlines() for x in content: if x.startswith(userid): tmp=string.strip(x) if tmp=="": print "not found %s"%userid sys.exit(0) tmparray=string.split(tmp,":") paramap["user"]=tmparray[1] paramap["password"]=tmparray[2] paramap["userid"]=userid paramap["host"]=host paramap["characters"]=tmparray[3] paramap["conntype"]=conntype return paramap def initpara(self,para): try: userid=para[1] host=para[2] conntype="" except: userid=raw_input("enter your userid:") host=raw_input("enter your host:") try: conntype=para[3] except: conntype="ssh" return userid,host,conntype def handle(self,para): userid,host,conntype=self.initpara(para) paramap=self.argv2map(userid,host,conntype) url,password=self.createSshUrl(paramap) self.connection(url,password) class ProxySsh(SimpleSsh): def initpara(self,para): self.defaultType="ssh" paramaparray={} argvarray=string.split(para,"-") for x in argvarray: if string.strip(x)=="": continue x=string.split(x," ") #print x[1],",",x[2],",",self.defaultType paramaparray[x[0]]=self.argv2map(x[1],x[2],self.defaultType) return paramaparray def createSshUrl(self,paramaparray): parakey=paramaparray.keys() parakey.sort() url="luit -encoding %character2% ssh -t %s1% \"bash -c 'ssh %s2%'\"" print "#"*40 for x in parakey: paramap=paramaparray[x] tmp=string.join((paramap["user"],"@",paramap["host"]),"") tmp1="%s"+x+"%" tmp2="%character"+x+"%" print "#",string.center(string.join((x,":",tmp,paramap["characters"]),""),36),"#" url=string.replace(url,tmp1,tmp) url=string.replace(url,tmp2,paramap["characters"]) print "#",string.center("created by lijunjieone@gmail.com",36),"#" print "#"*40 try: p=pexpect.spawn(url) try: p.setwinsize(self.lines,self.columns) print "resize windows(%s,%s)"%(columns,lines) except: pass for x in parakey: paramap=paramaparray[x] password=paramap["password"] p.expect("password") p.sendline(password) p.interact() except: print "connection close()" def handle(self,para): paramaparray=self.initpara(para) url=self.createSshUrl(paramaparray) if __name__=="__main__": """help: ./myssh.py ljj51 127.0.0.1 ./myssh.py ljj51 127.0.0.1 sftp ./myssh.py -1 ljj51 127.0.0.1 -2 ljj52 127.0.0.2 """ help="""help: ./myssh.py ljj51 127.0.0.1 ./myssh.py ljj51 127.0.0.1 sftp ./myssh.py -1 ljj51 127.0.0.1 -2 ljj52 127.0.0.2 """ argvpara=string.join(sys.argv[1:]," ") if "-" in argvpara: b=ProxySsh() b.handle(argvpara) elif "help" in argvpara: print help else: b=SimpleSsh() b.handle(sys.argv)
- myssh.tar (10 KB)
- 下载次数: 72
发表评论
-
linux使用透明的vim
2011-03-01 14:44 2651经常需要根据某个资料写点东西。这个时候在一个屏幕的时候就会容易 ... -
android下对xml的解析
2010-09-25 18:50 1707android 解析xml 1.使用SAXParser ... -
Ubuntu下的JNI入门
2010-08-05 22:00 26081.编写java代码 class HelloWorld { ... -
android Activity的四种加载模式
2010-08-05 15:39 2336standard和singleTop可以有很多个同一个Acti ... -
使用webview.copyBackForwardList()来进行判断是否是在当前页打开的链接
2010-07-09 13:29 4839本文只适合希望在webview中强制打开新链接在新标签。 使 ... -
ubuntu安装rtl8712,8188,8191,8192SU usb无线网卡的驱动
2010-06-21 21:03 17386笔记本自带的无线网卡,总是掉线,公司给了一个rtl8191s的 ... -
使用ant来发布一个android应用
2010-05-20 16:38 2368使用Ant创建发布一个android应用 1.使用命令创建一个 ... -
UBUNTU学习笔记
2010-02-01 08:49 17621.comp.os.mimix linux第一次 ... -
cvs中update 更新不到服务最新添加的目录解决方法
2010-01-18 11:28 21691.使用cvs -d$CVSROOT update,不能更新到 ... -
blockingQueue多线程中的小列子
2009-11-27 13:35 2001package com.demo; import ... -
linux:设置tomcat开机自动启动
2009-10-29 14:58 2296linux:设置tomcat开机自动启动 分公司的一台 ... -
在shell中快速移动光标实战
2009-09-04 09:38 0大家估计都听说过ctrl+a ctrl+e ctrl+k ct ... -
java使用正则表达式,简单提取xml中的内容
2009-09-02 17:53 12877我们现在互联网的交互很少可以离开xml了。有时候需要的xml很 ... -
MySQLdb对mysql数据库的中文操作测试补充(包括字符集gbk,utf8,latin1)
2009-08-24 17:04 3406前两天,用MySQLdb对mysql进行过中文测试,但是当 ... -
MySQLdb对mysql数据库的中文操作测试
2009-08-12 17:00 1709最近开始学习python,接触到了MySQLdb,总是会 ... -
ubuntu如何去掉噪音
2009-08-04 09:07 3019我自己测试出来的结果,是把音量控制中的cd设置成静音就可以了。 ... -
通过ip进行数据转发(支持post和soap)
2009-07-28 17:49 1817如果你经常跟运营商打交道,你也许会遇到以下几个问题: 1.经 ... -
网络分析使用的常用命令
2009-07-07 14:56 11981.机器名称:hostname 2.机器ip:ifconfig ... -
用tar来备份ubuntu系统
2009-07-01 09:03 1449可能你已经习惯了使用GHOST来备份WINDOWS的操作系统了 ... -
freemind中文方框解决
2009-06-30 11:44 5145网上看到介绍freemind不错,于是再ubuntu装上学习一 ...
相关推荐
12. Linux 服务器的安全性:本文档介绍了如何使用 Expect 脚本来维护 Linux 服务器的安全性,包括批量修改密码、添加新用户等操作。 本文档介绍了如何使用 Expect 脚本来批量修改远程 Linux 服务器的密码,并对 ...
c#远程调用linux服务器的Python脚本(csdn)————程序
此脚本功能主要是远程服务器进行日常巡检,比如CPU型号,内存,网络,系统版本,系统名称,登录错误日志,当前登录的数量,以及dmesg错误日志,会输入到表格中,适合运维人员,需要在此脚本的目录下创建名为"Linux监控信息.xlsx...
这个"shell脚本远程启动其他服务器的tomcat传输文件自动登录判断启动停止"的方案,就是一种典型的自动化运维实践,它结合了多个核心工具和技术,包括shell脚本、expect、ssh以及scp,用于实现远程服务器管理与文件...
目前Linux下有一些使用Python语言编写的Linux系统监控工具比如inotify-sync(文件系统安全监控软件)、glances(资源监控工具)在实际工作中,Linux系统管理员可以根据自己使用的服务器的具体情况编写一下简单实用的...
Linux下mysql定时自动备份并FTP到远程脚本
3. 在 Host Name(或 IP address)框中输入要登录的远程服务器 IP 地址,然后回车。 4. 输入要登录的用户名,例如 root,然后回车。 5. 输入密码,然后回车,即可登录到远程的 Linux 系统。 Putty 的优势 Putty ...
总的来说,通过学习和实践这样的Shell脚本,你可以有效地自动化监控远程服务器的关键性能指标,从而提高IT运维的效率和响应速度。这个过程不仅涉及到了Shell脚本编程,还涉及到对SNMP协议的理解和应用,对于提升IT...
总的来说,Java通过JSch库远程登录Linux服务器并执行命令,是Java与Linux系统交互的一种常用方式,尤其适用于自动化运维和脚本化的任务。通过理解并实践这些代码,你将能够更好地理解和掌握Java进行远程操作的能力。
widnows自动登录ssh服务器自动执行命令的脚本
在 Linux 系统下,可以使用 shell 脚本来实现 FTP 的自动化。下面是一个基本的示例脚本: ```bash #!/bin/sh F="xxxx.ftp" echo "open 192.168.7.51 21" > $F echo "user username passwd" >> $F echo "bin" >> $F ...
这个是什么: 集合了一工具,写几行命令就...简单点说,就是自动部署重启项目的bat脚本工具。 2你怎么用它 里面有示例,怎么上传,怎么关进程,怎么启动指定程序,最关键的一共才十几行代码,你按你要求改与就行
对于初学者,使用密码认证是最简单的,但为了增强安全性,推荐使用公钥认证,其中私钥保留在本地,公钥放在远程服务器的`~/.ssh/authorized_keys`文件中。 在连接到服务器后,用户可以执行常见的Linux命令,如`ls`...
在这篇文章中,我们将详细介绍如何在Linux中使用expect脚本来实现远程机器的自动登录。 首先,我们需要创建一个名为`ssh_expect`的expect脚本。这个脚本的主要任务是接收三个参数:远程主机名(hostname)、用户名...
在自动化场景下,我们可以通过Xshell的脚本功能实现自动登录和执行命令。具体步骤如下: 1. **创建脚本**:在Xshell中,你可以创建一个批处理脚本,该脚本包含登录服务器所需的SSH命令,以及你想要执行的一系列命令...
在Linux系统中,创建一个自动登录脚本可以极大地提高工作效率,特别是当你需要远程管理多台服务器或者持续执行某些任务时。SSH(Secure Shell)是一种网络协议,用于在不安全的网络上安全地传输数据,是远程登录...
需要对服务器进行批量的修改root密码,还要在每台服务器新建一个用户,如果一个一个登到的服务器上进行修改的话,估计一个下午又没有了,首先想到的是我最喜欢的php,其中有个ssh2 模块,不得不承认用php 来处理这样...
bat脚本实现将Windows文件上传至Linux服务器 不同选项实现具体功能、检查资源存在 、 确认上传
例如,如果备份脚本将文件保存在远程服务器的`/backup`目录下,可以在脚本末尾添加以下代码: ``` scp user@remote_server:/backup/your_database_backup.sql.gz /local/backup/path/ ``` 4. **验证备份**: ...
springboot项目linux系统下 通用 启动脚本 支持日志输出、远程调试开启 支持start、stop、restart命令 通用启动脚本,只需将服务名改成自己的服务名即可! 保证可用!