我使用的腻子远程登录到我校的主机。 在登录时,我们需要做这些步骤:
- 输入用户名
- 输入密码
- 命令“添加神谕”
- 命令“的sqlplus”
- 输入用户名
- 输入密码
我会登录到这台主机了很多在这个学期的课程,我希望创建一个将消除上述步骤中的冗余的脚本。 忽略有我在脚本密码的明显的安全疏忽,我将如何实现这一目标? 我有一个脚本零经验,所以您的反馈意见是极大的赞赏。 谢谢!
编辑:我与腻子的命令行选项发挥各地,我能够绕过使用步骤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
在朋友的帮助下想通了这一点。 该-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的,你应该罚款。
总之,现在自动化这些步骤在两个简单的步骤来完成:
- 双击
putty.bat
。 这将打开腻子并记录我进入主机。 - 运行命令
tcsh sql
。 这增加了Oracle工具到我的主机,并记录我到SQL数据库。
我不知道为什么以前的答案没有建议楼主设立一个壳配置文件,每次登录服务器端时自动执行其命令(在.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
当您使用-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
我想建议那些需求的通用解决方案,也许这是为你使用: AutoIt的 。 与该程序,你可以写上像腻子任何窗口的顶部脚本和执行你希望所有的命令(在文本框或按钮状按压按钮或鼠标点击)。
这样,您就可以模拟你总是用腻子做的所有步骤。
输入命令您登录可通过在腻子的底部通过SSH节会,你应该有一个选项,远程命令完成后(数据发送到服务器)的两个命令与分离;
mputty能做到这一点,但它似乎并不总是工作。 (如果等待周期太慢)
mputty使用腻子和它扩展腻子。 还有就是要运行脚本的选项。 如果它不工作,确保观望期前打字是一种高值或增加值。 见腻子会议,然后将其命名会议上,点击鼠标右键,属性/脚本页面。
您可以使用-i privatekeyfilelocation
如果你使用的是基于私钥来代替密码。