腻子脚本登录到主机(PuTTY scripting to log onto host)

2019-08-06 09:37发布

我使用的腻子远程登录到我校的主机。 在登录时,我们需要做这些步骤:

  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选项命令行,它看起来像腻子登录到主机,然后立即退出。 有没有办法让我的会话中运行的shell文件或正在使用-m选项错误后,我打开? 这是我一直在关注一个腻子指导的链接: http://the.earth.li/~sgtatham/putty/0.60/htmldoc/Chapter3.html 。

下面是我想在命令行运行总命令:

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

Answer 1:

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

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

这将记录在我远程到Linux主机。 在主机端,我创建了一个叫做一个shell文件sql这些内容:

#!/bin/tcsh

add oracle10g
sqlplus username password

我的主机的Linux构建使用tcsh 。 其他Linux版本可能使用bash ,所以只需使用bash代替tcsh的,你应该罚款。

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

  1. 双击putty.bat 。 这将打开腻子并记录我进入主机。
  2. 运行命令tcsh sql 。 这增加了Oracle工具到我的主机,并记录我到SQL数据库。


Answer 2:

我不知道为什么以前的答案没有建议楼主设立一个壳配置文件,每次登录服务器端时自动执行其命令(在.bashrc,.tcshrc文件等)。

这把我带到这个页面的帮助的追求是一个有点不同 - 我想为将执行不同的启动命令同一主机的多个腻子快捷方式。

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

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

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

与每个负载对应于腻子轮廓我已经保存(具有不同的主机在“会话”标签)。 (主要是他们仅在颜色方案不同 - 我喜欢有各组相关的任务共享颜色方案在终端窗口,与关键任务,像在生产系统登录为根,仅执行在明显着色的窗户。)

该文件夹的Windows属性都设置为非常干净剥离下来 - 它的功能与每个我经常使用遥控腻子和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

(无分号需要)

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

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

(溶液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 


Answer 3:

当您使用-m选项腻子不分配一个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



Answer 4:

我想建议那些需求的通用解决方案,也许这是为你使用: AutoIt的 。 与该程序,你可以写上像腻子任何窗口的顶部脚本和执行你希望所有的命令(在文本框或按钮状按压按钮或鼠标点击)。

这样,您就可以模拟你总是用腻子做的所有步骤。



Answer 5:

输入命令您登录可通过在腻子的底部通过SSH节会,你应该有一个选项,远程命令完成后(数据发送到服务器)的两个命令与分离;



Answer 6:

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

mputty使用腻子和它扩展腻子。 还有就是要运行脚本的选项。 如果它不工作,确保观望期前打字是一种高值或增加值。 见腻子会议,然后将其命名会议上,点击鼠标右键,属性/脚本页面。



Answer 7:

您可以使用-i privatekeyfilelocation如果你使用的是基于私钥来代替密码。



文章来源: PuTTY scripting to log onto host