我不知道为什么以前的答案没有建议原始海报设置一个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
使用'-m'命令后仍然没有答案让会话打开?会议闭幕时这很荒谬。如果有人希望会话关闭,他们可以很容易地将'exit'命令添加到传递给'-m'命令的脚本中。但是相反,如果没有* PuTTY *'=(' – ADTC
使用['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