title: python, paramiko, ssh exception ssh session not active
body: <p>I'm working on a python script that goes to each switch in our network, and issues a copy running-config TFTP command, that backs up the running configuration of the switch. I'm on windows and utilizing the paramiko library in Python 2.7. </p>
  
  <p>The script itself is pretty simple, all it does is create a directory called "Backups" if one doesn't exist already, and another directory named today's date, and then uses that directory for the TFTP. And it starts up the TFTP Server. Then it simply issues the copy command via ssh.</p>
  
  <p>This issue I am trying to overcome is during connectSwitch(). Specifically on the second ssh.exec_command('x.x.x.x'). If you don't know switches, the copy running-config tftp, is the first command sent, the switch asks for a host, and the second command is sent, that contains the host IP. And the third command is the directory where you want the file to be located. </p>
  
  <pre><code>import paramiko
  import getpass
  import os
  import time
  from datetime import date
  
  paramiko.util.log_to_file("filename.log")
  
  d = date.today()
  filename = d.strftime("%Y.%m.%d")
  
  UUser = "first.last"
  print UUser
  UPass = getpass.getpass('Enter your Password: ')
  
  def writeFile(text, Host):#Writes to the Switches backup File
      fl = open(Host+".txt", 'w')
      fl.write(text)
  
  def openIPs():#Opens the "IPs" file
      fi = open('IPs.txt', 'r')
      content = fi.readlines()
      fi.close()
      print len(content)
      makeDirBackUp()     #Creates "Backup" Dir
      makeDir()           #Creates a Directory based and named on todays date
      for item in content:
          response = os.system("ping -n 1 " +item)
          if response == 0:
              print  item + "PING STATUS: SUCCESS"
              print "BACKING UP CONFIG..."
              connectSwitch(UUser, UPass, item.strip('\n'))   #SSH connection to Switch
          else:
          print item + "PING STATUS: FAIL"
  
  def makeDir():#Creates a Directory based and named on todays date
      if not os.path.exists(filename):
          os.makedirs(filename)
      os.chdir(filename)
  
  def makeDirBackUp():#Creates "Backup" Dir
      if not os.path.exists("Backups"):
          os.makedirs("Backups")
      os.chdir("Backups")
  
  def connectSwitch(UUser, UPass, Host):#SSH connection to Switch
      ssh = paramiko.SSHClient()
      ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
      ssh.connect(Host, port=22, username=UUser, password=UPass)
      print "Command #1"
      sendtoCRT = 'copy running-config tftp'
  
      stdin, stdout, stderr = ssh.exec_command(sendtoCRT)
      print "Command #1 sent"
      print sendtoCRT
      time.sleep(1)
      print "readlines for Command #1"
  
  
      print "Command #2"
      stdin, stdout, stderr = ssh.exec_command('10.10.10.10')
      time.sleep(1)
      print "Command #2 Sent"
  
      print "Command #3"
      stdin, stdout, stderr = ssh.exec_command('Backups/'+filename+'/'+Host)
      time.sleep(1)
      print "Command #3 Sent"
  
  
  
  def startTFTP():
      sendToOS="tftpd32.exe"
      exe1 = os.system(sendToOS)
      sendToOS='\n'
      exe = os.system(sendToOS)
      exe = os.system(sendToOS)
  
  startTFTP()
  openIPs()
  </code></pre>
  
  <p>My error is occurring in connectSwitch() is in full, below.</p>
  
  <pre><code>Traceback (most recent call last):
    File "C:\Users\first.last\Documents\Backups\paramikoConnect.py", line 98, in &lt;module&gt; openIPs()
    File "C:\Users\first.last\Documents\Backups\paramikoConnect.py", line 32, in openIPs connectSwitch(UUser, UPass, item.strip('\n'))   #SSH connection to Switch
    File "C:\Users\first.last\Documents\Backups\paramikoConnect.py", line 68, in connectSwitch stdin, stdout, stderr = ssh.exec_command('138.86.51.189')
    File "C:\Python27\lib\site-packages\paramiko-1.15.2-py2.7.egg\paramiko\client.py", line 341, in exec_command chan = self._transport.open_session()
    File "C:\Python27\lib\site-packages\paramiko-1.15.2-py2.7.egg\paramiko\transport.py", line 615, in open_session max_packet_size=max_packet_size)
    File "C:\Python27\lib\site-packages\paramiko-1.15.2-py2.7.egg\paramiko\transport.py", line 696, in open_channel raise SSHException('SSH session not active')
  paramiko.ssh_exception.SSHException: SSH session not active
  </code></pre>
  
  <p>Anyone have any ideas about this. I can't find much about the error documentation in paramiko, so if someone knows where to find it,   lag. net/paramiko/docs/ seems to have been taken offline a while ago.</p>
  
  <p>but even using <a href="https://web.archive.org/web/20140425222451/http://www.lag.net/paramiko/docs/" rel="noreferrer">https://web.archive.org/web/20140425222451/http://www.lag.net/paramiko/docs/</a>, there doesn't seem to be much here.</p>
  
  <p>Thanks so much you guys!</p>
  
  <p>EDIT: Changed the first "sendtoCRT" to no longer include the :\, because you don't need it when doing the command in three steps. However this also seemingly changed my error</p>
  
  <pre><code>Traceback (most recent call last):
    File "C:\Users\first.last\Documents\Backups\paramikoConnect.py", line 98,in &lt;module&gt; openIPs()
    File "C:\Users\first.last\Documents\Backups\paramikoConnect.py", line 32, in openIPs connectSwitch(UUser, UPass, item.strip('\n'))   #SSH connection to Switch
    File "C:\Users\first.last\Documents\Backups\paramikoConnect.py", line 68, in connectSwitch stdin, stdout, stderr = ssh.exec_command('138.86.51.189')
    File "C:\Python27\lib\site-packages\paramiko-1.15.2-py2.7.egg\paramiko\client.py", line 341, in exec_command chan = self._transport.open_session()
    File "C:\Python27\lib\site-packages\paramiko-1.15.2-py2.7.egg\paramiko\transport.py", line 615, in open_session max_packet_size=max_packet_size)
    File "C:\Python27\lib\site-packages\paramiko-1.15.2-py2.7.egg\paramiko\transport.py", line 740, in open_channel raise e
  paramiko.ssh_exception.ChannelException: (4, 'Resource shortage')
  </code></pre>
  
  <p>Also I found more docs. </p>
  
  <p><a href="http://docs.paramiko.org/en/1.15/api/ssh_exception.html" rel="noreferrer">http://docs.paramiko.org/en/1.15/api/ssh_exception.html</a></p>