I've tried to connect to a server via wget:
wget http://<user>:<pass>@serveradress
But wget responds: invalid port
I know that the server accepts incoming traffic at port 80. How can I fix this issue?
Ask Ubuntu is a question and answer site for Ubuntu users and developers. It only takes a minute to sign up.
Sign up to join this communityWget interprets <pass>@serveraddress
as port. To specify a username and password, use the --user
and --password
switches:
wget --user user --password pass http://example.com/
From man wget
:
--user=user
--password=password
Specify the username user and password password for both FTP and HTTP file retrieval. These parameters can be overridden using the
--ftp-user
and--ftp-password
options for FTP connections and the--http-user
and--http-password
options for HTTP connections.
--ask-password
option described by Nabil Kadimi's answer. It has you enter the password invisibly on another line and avoids storing it in your shell history.
You have 3 options here. They are in no specific order other than gut feeling:
history
)wget --user=remote_user --password=SECRET ftp://ftp.example.com/file.ext
The password will also be visible in ps
, top
, htop
and similar.
wget --user=remote_user --password=SECRET ftp://ftp.example.com/file.ext
Notice the white space before the command, it prevents saving it to your history.
The password will also be visible in ps
, top
, htop
and similar. (Thanks user412812)
wget --user=remote_user --ask-password ftp://ftp.example.com/file.ext
Then you're asked for the password
Password for user `remote_user':
--ask-password
is not available or you don't want to type the password every time, wget -i link.txt
can help, where link.txt
contains ftp://remote_user:[email protected]/file.ext
Apr 27, 2018 at 13:57
You can also store the username and password in the file ~/.wgetrc
and change the permissions of that file so that only your user can
read it:
File ~/.wgetrc
:
user=john
password=SEcrEt
... and then
chmod 600 ~/.wgetrc
Note, however, that user root
can still peek into that file and
read the password.
From the manpage:
To prevent the passwords from being seen, use the
--use-askpass
or store them in.wgetrc
or.netrc
, and make sure to protect those files from other users with"chmod"
. If the passwords are really important, do not leave them lying in those files either --- edit the files and delete them after Wget has started the download.
This should work (don't miss the quotes)
wget 'http://<user>:<pass>@<serveradress>/<path>/<filename>'
Example for my access to the builds on ftp server
wget 'ftp://DOMAIN\thomas:dasbleibtge[email protected]/download/bins/lastnightly_v1.2.3.bin'
Note: To avoid to get this in your shell history add a space in front of wget
--> wget
You can provide authentication credential via --user=USERNAME
and --password=PASSWORD
; based on the man wget
, the command can be overridden using the --http-user=USERNAME
and --http-password=PASSWORD
for http connection and the --ftp-use=USERNAME
and --ftp-password=PASSWORD
for ftp connection.
The command could have used --http-user
and --http-password
instead of --user
and --password
. In case of ftp
request the options are --ftp-user
and --ftp-password
.
man wget
indicates that --user and --password are valid options, which can be overridden by --http-user or --ftp-password
Jun 15, 2017 at 13:04
wget
has separate command line options for those instead, so is probably naively parsing the string after the:
as a port number.