您好,我正在使用 win PC 上的 putty 連接到遠端 Linux 伺服器並在那裡執行某些命令。我希望使用 plink 自動執行任務,如下所示:
plink serveradress -l userid -pwd pass -batch "ls;cmd1"
如果我透過 putty/plink 手動執行命令“ls;cmd1;cmd2”,它的工作正常。但是,如果我透過 cmd.ext 和上面的 plink 命令執行相同的操作,我會得到「bash cmd1 not found」。但是,ls 指令工作正常。
為什麼會出現這種情況? PS:cmd1不是內建的linux指令。我想它是專門為伺服器創建的。
我該如何進行這項工作?
答案1
當 bash 抱怨「找不到命令」時,這意味著cmd1
在$PATH
.因此,您必須確保 的路徑cmd1
始終位於 中$PATH
,或必須指定 的完整路徑名cmd1
:
plink serveradress -l userid -pwd pass -batch "ls;/where/you/can/find/cmd1"
which cmd1
您可以在互動式 shell(透過 putty 的 shell)中找到完整路徑名。
~/.bashrc
您可以在或中設定 PATH ~/.profile
,即主目錄中的 .bashrc 或 .profile。
echo $PATH
您可以在 putty 會話中檢查 PATH或使用plink serveradress -l userid -pwd pass -batch 'echo $PATH'
(注意單引號)。如果兩者都做,您應該會看到差異。