我想创建 .sh文件
// Tried to connect to ftp server
ftp name_of_server
//input user name
username
//input password
password
链接如下 https://github.com/prokid221/shell-programing.git
而不是登录,它再次要求输入用户名和密码 任何人都可以帮助解决这个问题吗?
答案 0 :(得分:0)
最佳解决方案是查看您的ftp
命令手册。它可能提供命令行标志或可以使用环境变量来指定用户名和密码。
如果没有这样的东西,另一种方法是提供ftp
标准输入。我想这是你尝试做的,但是这就是你的脚本所做的:
ftp
并等待命令返回。这就是ftp
询问用户名的地方。ftp
后,运行以用户名命名的命令。可能没有这个名字的命令所以它会抱怨它。因此,要真正提供stdin,您可以使用printf(1):
printf "username\npassword\n" | ftp name_of_website
修改:我忘记的另一种方法是将这些信息放入网址:ftp://username:password@name_of_website
。
答案 1 :(得分:0)
尝试:
#!/bin/sh
HOST='your.ftp.server.net'
USER='yourid'
PASSWD='yourpw'
FILE='file.txt'
ftp -n $HOST <<END_SCRIPT
quote USER $USER
quote PASS $PASSWD
#put $FILE
#quit
END_SCRIPT
exit 0
如果您想从脚本外部提供主机名作为命令行,那么您可以使用,
HOST = $1
,
因此,如果您的scriptname为serverftp.sh
,则会将主机名设置为;
serverftp.sh <ftp_server_name>
答案 2 :(得分:0)
如果您只需要文件传输,则可以使用curl。
下载文件:
curl -O -u user:password ftp://example.com/some-file
上传文件:
curl -T some-file -u user:password ftp://example.com
答案 3 :(得分:0)
如何在shell脚本中使用expect
?
#!/bin/sh
SERVER="example.com"
ID="toor"
PASSWD="secret"
expect <<EOF
spawn ftp $SERVER
expect ": "
send "$ID\r"
expect "Password:"
send "$PASSWD\r"
expect "ftp>"
send "ls\r
expect "ftp>"
send "quit\r
interact
EOF