2013-01-11 133 views
7

我正在使用PuTTY远程登录到我学校的主机。在登录时,我们需要做这些步骤:PuTTY脚本登录到主机

  1. 输入用户名
  2. 输入密码
  3. 命令 “添加甲骨文”
  4. 命令 “的sqlplus”
  5. 输入用户名
  6. 输入密码

我会在这个最简单的过程中登录这个主机呃,我希望能够创建一个脚本来消除上述步骤的冗余。忽略脚本中密码的明显安全漏洞,我将如何实现这一目标?我没有脚本经验,所以您的反馈非常感谢。谢谢!

编辑:我与腻子的命令行选项发挥各地,我能使用绕过步骤1-2:

putty -load "host" -l username -pw password 

我还创建了一个shell文件看起来像这样:

#!/bin/bash 

add oracle10g 
sqlplus username password 

当我尝试使用-m选项将此选项添加到命令行时,它看起来像PuTTY登录到主机,然后立即退出。有没有办法让运行shell文件后我的会话保持打开状态,还是错误地使用-m选项?以下是我一直在使用的PuTTY指南的链接:http://the.earth.li/~sgtatham/putty/0.60/htmldoc/Chapter3.html

这里是我想在命令行运行总命令:

putty -load "host" -l username -pw password -m c:\test.sh 
+0

使用'-m'命令后仍然没有答案让会话打开?会议闭幕时这很荒谬。如果有人希望会话关闭,他们可以很容易地将'exit'命令添加到传递给'-m'命令的脚本中。但是相反,如果没有* PuTTY *'=(' – ADTC

+0

使用['plink'](http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html)除了它是命令行版本,而不是GUI之外,它由'putty'开发,所以你可以通过批处理文件使用'(echo add oracle&echo sqlplus)| plink user @ remote -pw ssh_passwd'。这些多重回声语句可以包含在[批处理文件函数](http://www.dostips.com/DtTutoFunctions.php) – anishsane

回答

7

在朋友的帮助下找到了这一点。 -m PuTTY选项将在执行shell文件后立即结束您的会话。我做了什么,而不是为我创建了一个名为putty.bat与我的Windows机器上这些内容的批处理脚本:

@echo off 
putty -load "host" -l username -pw password 

这在远程登录我的Linux主机。在主机端,我创建了一个名为sql这些内容的shell文件:

#!/bin/tcsh 

add oracle10g 
sqlplus username password 

我的主机的Linux构建使用tcsh。其他Linux版本可能使用bash,所以只需用bash替换tcsh,你应该没问题。

总之,现在自动化这些步骤在两个简单的步骤来完成:

  1. 双击putty.bat。这将打开PuTTY并将我登录到主机中。
  2. 运行命令tcsh sql。这将oracle工具添加到我的主机,并将我登录到sql数据库。
+0

注意:你可以使用任何你喜欢的shell作为主机端文件,在我看来, tcsh(和csh)需要DIAF –

0

我想建议那些需求的通用解决方案,也许这是为你使用:AutoIt。使用该程序,您可以在任何窗口(如Putty)上编写脚本,并执行所有您想要的命令(如按下按钮或在文本框或按钮中单击鼠标)。

这样你就可以模拟你一直用腻子做的所有步骤。

0

登录后输入命令可以通过查看putty底部的SSH部分来完成,并且您应该有一个选项远程命令(要发送到服务器的数据)将两个命令分隔开;

+0

'在底部的腻子'如果他想脚本的交互,并“消除冗余的上述步骤”,手动输入的东西在GUI没有达到这个目标。 –

+0

他正在讨论在t的Connection \ SSH设置中配置和存储'Remote Command'他会议。在GUI中配置它并不意味着它不能在CLI中使用。当使用'-load'选项将会话名称提供给putty.exe时,将应用所有这些设置。执行mysql后执行 –

-1

如果您使用私钥而不是基于密码,则可以使用-i privatekeyfilelocation

2

当您使用-m选项时,putty不会分配tty,它会运行命令并退出。如果你想运行一个交互式脚本(比如sql客户端),你需要告诉它分配一个tty和-t,见3.8.3.12 -t and -T: control pseudo-terminal allocation。您将避免在服务器上保留脚本,以及在连接后不得不调用脚本。

下面是我使用批处理文件连接到MySQL什么:

#mysql.bat start putty -t -load "sessionname" -l username -pw password -m c:\mysql.sh

#mysql.sh mysql -h localhost -u username --password="foo" mydb

https://superuser.com/questions/587629/putty-run-a-remote-command-after-login-keep-the-shell-running

+0

。蝙蝠打开会话终端,然后自动关闭为什么 – shareef

0

mputty能做到这一点,但它似乎并不总是工作。 (如果等待时间太慢)

mputty使用腻子,它扩展腻子。 有一个选项可以运行脚本。 如果不起作用,请确保在打字之前的等待时间为高值或增加该值。请参阅putty会话,然后查看会话名称,鼠标右键,属性/脚本页面。

5

我不知道为什么以前的答案没有建议原始海报设置一个shell配置文件(bashrc,.tcshrc等),它们每次在服务器端登录时都会自动执行它们的命令。

把我带到这个页面寻求帮助的任务有点不同 - 我想为同一个主机执行不同的启动命令的多个PuTTY快捷方式。

我想出了两种解决方案,这两个工作:

(背景)我有各种腻子快捷方式的文件夹,每个模块在快捷方式选项卡中的“目标”属性看起来应该是:

"C:\Program Files (x86)\PuTTY\putty.exe" -load host01 

每个负载对应于我保存的PuTTY配置文件(在“Session”选项卡中使用不同的主机)。 (大多数情况下,它们只在颜色方案上有所不同 - 我喜欢让每组相关任务在终端窗口中共享一个配色方案,其中包含关键任务,如在生产系统上以root身份登录,仅在明显着色的窗口中执行。)

该文件夹的Windows属性设置为非常干净并且剥离下来 - 它充当一个小型控制台,带有用于每个频繁远程PuTTY和RDP连接的快捷方式图标。

(溶液1) 正如在其他的答案-m开关用于配置在Windows端运行脚本所提到的,使用-t开关保持连接,但我发现,这是为了敏感的,如果我想要得到它,而无需退出

跑什么,我终于得到了很多的试验和错误后,开始工作了:

(快捷方式目标字段):

"C:\Program Files (x86)\PuTTY\putty.exe" -t -load "SSH Proxy" -m "C:\Users\[me]\Documents\hello-world-bash.txt" 

,其中正在执行的文件看起来像

echo "Hello, World!" 
echo "" 
export PUTTYVAR=PROXY 
/usr/local/bin/bash 

(无分号需要)

这将运行脚本命令(在我的情况下,只需打印“你好,世界”在终端上),并设置一个变量,我远程会话可以与之交互。

调试注意事项:当您运行PuTTY时,它会加载-m脚本,如果您编辑脚本,则需要重新启动PuTTY而不是重新启动会话。

(溶液2) 此方法感觉会更加清晰,由于大脑在远程Unix方,而不是本地Windows侧:从现有

从修补剂主会话(未“编辑设置”会话)加载保存的配置,并在SSH标签中设置远程命令:

export PUTTYVAR=GREEN; bash -l 

然后,在我的.bashrc,我有进行基于该变量不同的动作的部分:

case ${PUTTYVAR} in 
    "") 
    echo "" 
    ;; 
    "PROXY") 
    # this is the session config with all the SSH tunnels defined in it 
    echo ""; 
    echo "Special window just for holding tunnels open." ; 
    echo ""; 
    PROMPT_COMMAND='echo -ne "\033]0;Proxy Session @master01\$\007"' 
    alias temppass="ssh keyholder.example.com makeonetimepassword" 
    alias | grep temppass 
    ;; 
    "GREEN") 
    echo ""; 
    echo "It's not easy being green" 
    ;; 
    "GRAY") 
    echo "" 
    echo "The gray ghost" 
    ;; 
    *) 
    echo ""; 
    echo "Unknown PUTTYVAR setting ${PUTTYVAR}" 
    ;; 
esac 

(溶液3,未试过)

它也应该能够有庆典跳过我的.bashrc并执行不同的启动脚本,通过把这个在腻子SSH命令字段:

bash --rcfile .bashrc_variant -l