Socket - gaierror

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • half.italian@gmail.com

    Socket - gaierror

    Hi all,

    I'm having trouble with the socket module resolving a hostname. It
    seems like this is a system level problem, but I'm not even sure where
    to start. I can ping the smtp server by name and IP, but when
    smtp.SMTP("theH ost") tries to get the hostname, it keeps giving me the
    following error:

    File "bin/program.py", line 123, in notify
    smtp = smtplib.SMTP("t heHost")

    File "/usr/lib/python2.4/smtplib.py", line 255, in __init__
    addr = socket.gethostb yname(socket.ge thostname())

    gaierror: (-2, 'Name or service not known')

    I tried changing to a different smtp server, using an ip instead of a
    host name. I could ping both boxes by name oor IP.

    any ideas?

    ~Sean

  • Larry Bates

    #2
    Re: Socket - gaierror

    half.italian@gm ail.com wrote:
    Hi all,
    >
    I'm having trouble with the socket module resolving a hostname. It
    seems like this is a system level problem, but I'm not even sure where
    to start. I can ping the smtp server by name and IP, but when
    smtp.SMTP("theH ost") tries to get the hostname, it keeps giving me the
    following error:
    >
    File "bin/program.py", line 123, in notify
    smtp = smtplib.SMTP("t heHost")
    >
    File "/usr/lib/python2.4/smtplib.py", line 255, in __init__
    addr = socket.gethostb yname(socket.ge thostname())
    >
    gaierror: (-2, 'Name or service not known')
    >
    I tried changing to a different smtp server, using an ip instead of a
    host name. I could ping both boxes by name oor IP.
    >
    any ideas?
    >
    ~Sean
    >
    The specific error shown is a DNS resolution problem. Based on the
    URL "theHost" smtplib can't resolve to an IP address (which is what
    socket.gethostb yname does). You don't say what happened when you changed to ip,
    but I suspect it is a different error or some other problem. Maybe a firewall
    issue (port 25 not open?), but I'm just guessing.

    -Larry

    Comment

    • half.italian@gmail.com

      #3
      Re: Socket - gaierror

      On Aug 27, 12:32 pm, Larry Bates <larry.ba...@we bsafe.comwrote:
      half.ital...@gm ail.com wrote:
      Hi all,
      >
      I'm having trouble with the socket module resolving a hostname. It
      seems like this is a system level problem, but I'm not even sure where
      to start. I can ping the smtp server by name and IP, but when
      smtp.SMTP("theH ost") tries to get the hostname, it keeps giving me the
      following error:
      >
      File "bin/program.py", line 123, in notify
      smtp = smtplib.SMTP("t heHost")
      >
      File "/usr/lib/python2.4/smtplib.py", line 255, in __init__
      addr = socket.gethostb yname(socket.ge thostname())
      >
      gaierror: (-2, 'Name or service not known')
      >
      I tried changing to a different smtp server, using an ip instead of a
      host name. I could ping both boxes by name oor IP.
      >
      any ideas?
      >
      ~Sean
      >
      The specific error shown is a DNS resolution problem. Based on the
      URL "theHost" smtplib can't resolve to an IP address (which is what
      socket.gethostb yname does). You don't say what happened when you changed to ip,
      but I suspect it is a different error or some other problem. Maybe a firewall
      issue (port 25 not open?), but I'm just guessing.
      >
      -Larry
      Changing it to IP gives me the same exact error...

      File "bin/prgram.py", line 123, in notify
      smtp = smtplib.SMTP("X XX.XXX.XXX.XXX" )

      File "/usr/lib/python2.4/smtplib.py", line 255, in __init__
      addr = socket.gethostb yname(socket.ge thostname())

      gaierror: (-2, 'Name or service not known')

      Looks like the smtp port is closed on the client machine...doh Should
      have gotten to that!

      Thank you.

      ~Sean

      Comment

      • half.italian@gmail.com

        #4
        Re: Socket - gaierror

        On Aug 27, 12:47 pm, half.ital...@gm ail.com wrote:
        On Aug 27, 12:32 pm, Larry Bates <larry.ba...@we bsafe.comwrote:
        >
        >
        >
        half.ital...@gm ail.com wrote:
        Hi all,
        >
        I'm having trouble with the socket module resolving a hostname. It
        seems like this is a system level problem, but I'm not even sure where
        to start. I can ping the smtp server by name and IP, but when
        smtp.SMTP("theH ost") tries to get the hostname, it keeps giving me the
        following error:
        >
        File "bin/program.py", line 123, in notify
        smtp = smtplib.SMTP("t heHost")
        >
        File "/usr/lib/python2.4/smtplib.py", line 255, in __init__
        addr = socket.gethostb yname(socket.ge thostname())
        >
        gaierror: (-2, 'Name or service not known')
        >
        I tried changing to a different smtp server, using an ip instead of a
        host name. I could ping both boxes by name oor IP.
        >
        any ideas?
        >
        ~Sean
        >
        The specific error shown is a DNS resolution problem. Based on the
        URL "theHost" smtplib can't resolve to an IP address (which is what
        socket.gethostb yname does). You don't say what happened when you changed to ip,
        but I suspect it is a different error or some other problem. Maybe a firewall
        issue (port 25 not open?), but I'm just guessing.
        >
        -Larry
        >
        Changing it to IP gives me the same exact error...
        >
        File "bin/prgram.py", line 123, in notify
        smtp = smtplib.SMTP("X XX.XXX.XXX.XXX" )
        >
        File "/usr/lib/python2.4/smtplib.py", line 255, in __init__
        addr = socket.gethostb yname(socket.ge thostname())
        >
        gaierror: (-2, 'Name or service not known')
        >
        Looks like the smtp port is closed on the client machine...doh Should
        have gotten to that!
        >
        Thank you.
        >
        ~Sean
        I take it back, that wasn't the solution. I got it to work by
        haacking smtplib with a static host instead of the
        socket.gethostb yname(socket.ge thostname()) call...but if I leave that
        in there I might get shot one day. What could cause the shell to be
        able to resolve the addresses properly, but not python?
        nnsswitch.conf ?

        I don't know enough about what's going on in the background. Any
        other ideas? Or should I try this on a unix board?

        ~Sean

        Comment

        • Lawrence D'Oliveiro

          #5
          Re: Socket - gaierror

          In message <1188253525.718 844.115500@q5g2 000prf.googlegr oups.com>,
          half.italian@gm ail.com wrote:
          What could cause the shell to be
          able to resolve the addresses properly, but not python?
          nnsswitch.conf ?
          How did you test the name resolution in the shell--was it with "host"
          or "ping"? I would recommend ping, because that would use the same C
          runtime gethostbyname call that your Python code is trying to use.

          Comment

          • Douglas Wells

            #6
            Re: Socket - gaierror

            In article <1188244050.029 920.314700@i13g 2000prf.googleg roups.com>,
            half.italian@gm ail.com writes:
            On Aug 27, 12:32 pm, Larry Bates <larry.ba...@we bsafe.comwrote:
            >
            Changing it to IP gives me the same exact error...
            >
            File "bin/prgram.py", line 123, in notify
            smtp = smtplib.SMTP("X XX.XXX.XXX.XXX" )
            >
            File "/usr/lib/python2.4/smtplib.py", line 255, in __init__
            addr = socket.gethostb yname(socket.ge thostname())
            >
            gaierror: (-2, 'Name or service not known')
            >
            Looks like the smtp port is closed on the client machine...doh Should
            have gotten to that!
            >
            ~Sean
            Note that the lookup is of your *local* system name
            (socket.gethost name()). I suspect that the name of your client
            system (the one running the python script) is not registered in
            DNS.

            Try ping'ing your own system and see if that resolves in DNS. In
            UNIX/Linux you can use the hostname command; in any system you can
            write a python script to print the result of socket.gethostn ame().

            - dmw


            --
            .. Douglas Wells . Connection Technologies .
            .. Internet: -sp9804- -at - contek.com- .

            Comment

            • half.italian@gmail.com

              #7
              Re: Socket - gaierror

              On Aug 27, 4:22 pm, s...@signature. invalid (Douglas Wells) wrote:
              In article <1188244050.029 920.314...@i13g 2000prf.googleg roups.com>,
              >
              >
              >
              half.ital...@gm ail.com writes:
              On Aug 27, 12:32 pm, Larry Bates <larry.ba...@we bsafe.comwrote:
              >
              Changing it to IP gives me the same exact error...
              >
              File "bin/prgram.py", line 123, in notify
              smtp = smtplib.SMTP("X XX.XXX.XXX.XXX" )
              >
              File "/usr/lib/python2.4/smtplib.py", line 255, in __init__
              addr = socket.gethostb yname(socket.ge thostname())
              >
              gaierror: (-2, 'Name or service not known')
              >
              Looks like the smtp port is closed on the client machine...doh Should
              have gotten to that!
              >
              ~Sean
              >
              Note that the lookup is of your *local* system name
              (socket.gethost name()). I suspect that the name of your client
              system (the one running the python script) is not registered in
              DNS.
              >
              Try ping'ing your own system and see if that resolves in DNS. In
              UNIX/Linux you can use the hostname command; in any system you can
              write a python script to print the result of socket.gethostn ame().
              >
              - dmw
              >
              --
              . Douglas Wells . Connection Technologies .
              . Internet: -sp9804- -at - contek.com- .
              I found a solution...but still not sure why that happened.

              root@00:17:08:5 E:EF:0F:/usr/local/sw/program/bin# hostname
              00:17:08:5E:EF: 0F
              root@00:17:08:5 E:EF:0F:/usr/local/sw/program/bin# ping 00:17:08:5E:EF:
              0F
              ping: unknown host 00:17:08:5E:EF: 0F
              >>socket.gethos tname()
              '00:17:08:5E:EF :0F'

              Workaround: pass the 'local_hostname ' arg to the smtplib.SMTP() call
              with "localhost"

              ie smtp.SMTP("some .computer", local_hostname= "localhost" )

              This is just overriding the socket.gethostn ame() call entirely.

              Did a bit of testing with the /etc/hosts file, and even with an entry
              to the hostname it can't resolve the ip.
              The problem is the name "00:17:08:5E:EF :0F" PS. I didn't choose to
              set the hostname that way.

              ~Sean

              Comment

              • Steve Holden

                #8
                Re: Socket - gaierror

                half.italian@gm ail.com wrote:
                On Aug 27, 12:47 pm, half.ital...@gm ail.com wrote:
                >On Aug 27, 12:32 pm, Larry Bates <larry.ba...@we bsafe.comwrote:
                >>
                >>
                >>
                >>half.ital...@ gmail.com wrote:
                >>>Hi all,
                >>>I'm having trouble with the socket module resolving a hostname. It
                >>>seems like this is a system level problem, but I'm not even sure where
                >>>to start. I can ping the smtp server by name and IP, but when
                >>>smtp.SMTP("t heHost") tries to get the hostname, it keeps giving me the
                >>>following error:
                >>> File "bin/program.py", line 123, in notify
                >>> smtp = smtplib.SMTP("t heHost")
                >>> File "/usr/lib/python2.4/smtplib.py", line 255, in __init__
                >>> addr = socket.gethostb yname(socket.ge thostname())
                >>>gaierror: (-2, 'Name or service not known')
                >>>I tried changing to a different smtp server, using an ip instead of a
                >>>host name. I could ping both boxes by name oor IP.
                >>>any ideas?
                >>>~Sean
                >>The specific error shown is a DNS resolution problem. Based on the
                >>URL "theHost" smtplib can't resolve to an IP address (which is what
                >>socket.gethos tbyname does). You don't say what happened when you changed to ip,
                >>but I suspect it is a different error or some other problem. Maybe a firewall
                >>issue (port 25 not open?), but I'm just guessing.
                >>-Larry
                >Changing it to IP gives me the same exact error...
                >>
                > File "bin/prgram.py", line 123, in notify
                > smtp = smtplib.SMTP("X XX.XXX.XXX.XXX" )
                >>
                > File "/usr/lib/python2.4/smtplib.py", line 255, in __init__
                > addr = socket.gethostb yname(socket.ge thostname())
                >>
                >gaierror: (-2, 'Name or service not known')
                >>
                >Looks like the smtp port is closed on the client machine...doh Should
                >have gotten to that!
                >>
                >Thank you.
                >>
                >~Sean
                >
                I take it back, that wasn't the solution. I got it to work by
                haacking smtplib with a static host instead of the
                socket.gethostb yname(socket.ge thostname()) call...but if I leave that
                in there I might get shot one day. What could cause the shell to be
                able to resolve the addresses properly, but not python?
                nnsswitch.conf ?
                >
                I don't know enough about what's going on in the background. Any
                other ideas? Or should I try this on a unix board?
                >
                Well the first thing to do is call socket.gethostn ame() and see what it
                returns, then call socket.gethostb yname() on the result. Once you know
                what's failing we might be able to help.

                regards
                Steve
                --
                Steve Holden +1 571 484 6266 +1 800 494 3119
                Holden Web LLC/Ltd http://www.holdenweb.com
                Skype: holdenweb http://del.icio.us/steve.holden
                --------------- Asciimercial ------------------
                Get on the web: Blog, lens and tag the Internet
                Many services currently offer free registration
                ----------- Thank You for Reading -------------

                Comment

                • Douglas Wells

                  #9
                  Re: Socket - gaierror

                  In article <1188260349.031 088.69010@l22g2 000prc.googlegr oups.com>,
                  half.italian@gm ail.com writes:
                  On Aug 27, 4:22 pm, s...@signature. invalid (Douglas Wells) wrote:
                  In article <1188244050.029 920.314...@i13g 2000prf.googleg roups.com>,

                  half.ital...@gm ail.com writes:
                  On Aug 27, 12:32 pm, Larry Bates <larry.ba...@we bsafe.comwrote:
                  Changing it to IP gives me the same exact error...
                  File "bin/prgram.py", line 123, in notify
                  smtp = smtplib.SMTP("X XX.XXX.XXX.XXX" )
                  File "/usr/lib/python2.4/smtplib.py", line 255, in __init__
                  addr = socket.gethostb yname(socket.ge thostname())
                  gaierror: (-2, 'Name or service not known')
                  ~Sean
                  Note that the lookup is of your *local* system name
                  (socket.gethost name()). I suspect that the name of your client
                  system (the one running the python script) is not registered in
                  DNS.

                  Try ping'ing your own system and see if that resolves in DNS. In
                  UNIX/Linux you can use the hostname command; in any system you can
                  write a python script to print the result of socket.gethostn ame().

                  - dmw
                  >
                  I found a solution...but still not sure why that happened.
                  >
                  root@00:17:08:5 E:EF:0F:/usr/local/sw/program/bin# hostname
                  00:17:08:5E:EF: 0F
                  root@00:17:08:5 E:EF:0F:/usr/local/sw/program/bin# ping 00:17:08:5E:EF: 0F
                  ping: unknown host 00:17:08:5E:EF: 0F
                  >
                  >socket.gethost name()
                  '00:17:08:5E:EF :0F'
                  >
                  Workaround: pass the 'local_hostname ' arg to the smtplib.SMTP() call
                  with "localhost"
                  >
                  ie smtp.SMTP("some .computer", local_hostname= "localhost" )
                  >
                  This is just overriding the socket.gethostn ame() call entirely.
                  >
                  Did a bit of testing with the /etc/hosts file, and even with an entry
                  to the hostname it can't resolve the ip.
                  The problem is the name "00:17:08:5E:EF :0F" PS. I didn't choose to
                  set the hostname that way.
                  >
                  ~Sean
                  That would be a reasonable workaround. The process of sending
                  e-mail via SMTP could need the local host name for at least two
                  uses: 1) the SMTP initial connection (RFC 2821) requires the
                  client to identify itself (provide its host name); 2) the mail
                  headers (RFC 2822) should include a return address, which probably
                  defaults to using your user name at your client host name.

                  The hostname of your system (00:17:08:5E:EF :0F) is silly when used
                  with SMTP. Your system administrator is either ill-informed or is
                  actively trying to prevent users from using their systems as
                  servers. It has the form of an IPv6 numeric host address.

                  Given the pathnames in your command interchange, you have a UNIX,
                  Linux, or UNIX-like system. According to the Linux and UNIX standards:

                  - If your system is IPv6-capable, the use of such a name with
                  gethostbyname invokes "unspecifie d behavior." First, the function
                  is not defined to work with such "numeric" identifiers. Second,
                  it is not guaranteed to work with non-IPv4 names, and probably
                  can't be registered in pre-i18n DNS data bases.

                  - Even if your system is not IPv6-capable, such a host name is going
                  to confuse many other systems that would be IPv6-capable and attempt
                  to resolve the odd-ball name that your system provides.

                  - Even if that worked, you're providing an IPv6 name form in
                  conjunction with an IPv4 protocol (at least when you explicitly
                  provide the IP address as a dotted-quad).

                  - dmw

                  --
                  .. Douglas Wells . Connection Technologies .
                  .. Internet: -sp9804- -at - contek.com- .

                  Comment

                  Working...