4

I'm trying to connect to my ftp server with the following Python script on a Mac running OS X Yosemite (10.10.5):

from ftplib import FTP
import ConfigParser

config_file = "ftp.config"
config = ConfigParser.ConfigParser()
try:
    config.read(config_file)
except:
    raise Exception("Failed reading {} file.").format(config_file)

server_address  = config.get("main", "server")
user_name = config.get("main", "user_name")
password  = config.get("main", "password")

ftp = FTP(server_address)
ftp.login(user_name, password)
print "Logging in as '{}'".format(user_name)

The script gets the server information from the file "ftp.config" with the following content:

[main]
enable      =   1
server      =   "my.ftp.address"
user_name   =   "some_user_name"
password    =   "some_password"

When I run the script, I get the following error:

Traceback (most recent call last):  
    File "ftp2.py", line 34, in <module>
        ftp = FTP(server_address)
    File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ftplib.py", line 120, in __init__
        self.connect(host)
    File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ftplib.py", line 135, in connect
    self.sock = socket.create_connection((self.host, self.port), self.timeout)
    File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/socket.py", line 557, in create_connection
        for res in getaddrinfo(host, port, 0, SOCK_STREAM): 
    socket.gaierror: [Errno 8] nodename nor servname provided, or not known

I have no idea why the error occurs. I've tried to .split() the strings from the ".config" file, in order to remove superfluous lines, but this doesn't seem to help.

Any ideas, guys?

Thanks.

St4rb0y
  • 317
  • 3
  • 5
  • 22

2 Answers2

7

Remove the quotes in your configuration file

[main]
enable      =   1
server      =   my.ftp.address
user_name   =   some_user_name
password    =   some_password
implmentor
  • 1,386
  • 4
  • 21
  • 32
1

I had the same socket.gaierror being thrown.

This caused the error:

companies_list = ['https://www.coinbase.com', 'https://www.glassdoor.com']

Removing the protocol stopped the error:

companies_list = ['www.coinbase.com', 'www.glassdoor.com']
rustyMagnet
  • 3,479
  • 1
  • 31
  • 41