我有以下脚本来自动将文件上传到远程服务器。问题是我给出的密码中充满了特殊字符,这些字符会导致登录过程终止。
以下是角色的更改版本:
J7〜]%安培; X
使用普通的FTP应用程序时没有问题。我已将密码包装在引号中,并尝试使用^
来逃避百分比和&符号。但是,它不起作用。另外,我无法确定发送的实际密码是什么。
可能出现什么问题或如何在发送密码之前泄露密码?
:Source = http://www.howtogeek.com/howto/windows/how-to-automate-ftp-uploads-from-the-windows-command-line/
@echo off
echo user myloginname> ftpcmd.dat
echo mypassword>> ftpcmd.dat
echo bin>> ftpcmd.dat
echo put %1>> ftpcmd.dat
echo quit>> ftpcmd.dat
ftp -n -s:ftpcmd.dat myserver
del ftpcmd.dat
解
如下所述,我使用“type”命令查看ftpcmd.dat
中的实际内容。事实证明,通过大量的试验,一个错误和读取转义字符,你使用不同的转义字符为不同的特殊字符!
对于&符号使用插入符号,百分比使用百分比。所以,鉴于我的密码:
J7〜]%安培; X
生成的密码为:
J7〜] %% ^&安培; X
答案 0 :(得分:4)
在您的情况下,您只需在删除文件之前键入文件以显示密码。
但最好使用延迟扩展,因为这时特殊字符会失去“特殊”行为,甚至是插入符号和百分号。
@echo off
setlocal EnableDelayedExpansion
set /p passwd=Enter pwd
echo user myloginname> ftpcmd.dat
echo mypassword>> ftpcmd.dat
echo bin>> ftpcmd.dat
echo put !passwd! >> ftpcmd.dat
echo quit>> ftpcmd.dat
type ftpcmd.dat
ftp -n -s:ftpcmd.dat myserver
第二个问题是ftp命令,其中字符也需要转义。 也许(像Vicky写的那样)反斜杠可行。 您可以使用for-loop
将它放在每个单个字符之前答案 1 :(得分:1)
FTP密码以纯文本形式发送,因此安装Wireshark之类的内容可以让您查看正在发送的内容。
我希望您需要使用反斜杠为特殊字符添加前缀。
答案 2 :(得分:1)
仅供参考,字符前缀用^完成。因此,如果您在字符串中使用echo
进行>
但是编写文件,则会在没有转义的情况下失败。语法如下:
echo ^<html^> >> foo.txt