# socket.timout() while connecting to a junos devices via network\_cli

**URL:** <https://forum.ansible.com/t/socket-timout-while-connecting-to-a-junos-devices-via-network-cli/30240>\
**Category:** Ansible Project\
**Created:** [May 2, 2019, 6:21am UTC](https://forum.ansible.com/t/socket-timout-while-connecting-to-a-junos-devices-via-network-cli/30240 "2019-05-02T06:21:00Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![vicky.singh](https://avatars.discourse-cdn.com/v4/letter/v/c5a1d2/32.png) [@vicky.singh](https://forum.ansible.com/u/vicky.singh)\
**Post date:** [May 2, 2019, 6:21am UTC](https://forum.ansible.com/t/socket-timout-while-connecting-to-a-junos-devices-via-network-cli/30240/1 "2019-05-02T06:21:00Z")

</div>

I was exploring ansible and the first step i tried was getting some information from a router (a virtual gns3 image).

I am able to connect to the device using ssh, get into it’s cli and run commands normally but not via ansible.  
I ran asnible playbook with -vvvvv option( ansible-playbook -vvvvv test.yml -i inv ) and these were the logs.

ansible-playbook 2.7.10  
config file = /etc/ansible/ansible.cfg  
configured module search path = [u’/home/vicky/.ansible/plugins/modules’, u’/usr/share/ansible/plugins/modules’]  
ansible python module location = /usr/lib/python2.7/dist-packages/ansible  
executable location = /usr/bin/ansible-playbook  
python version = 2.7.15rc1 (default, Nov 12 2018, 14:31:15) [GCC 7.3.0]  
Using /etc/ansible/ansible.cfg as config file  
setting up inventory plugins  
/opt/workminuscode/ansiblePractice/try2/inv did not meet host\_list requirements, check plugin documentation if this is unexpected  
/opt/workminuscode/ansiblePractice/try2/inv did not meet script requirements, check plugin documentation if this is unexpected  
Parsed /opt/workminuscode/ansiblePractice/try2/inv inventory source with ini plugin  
Loading callback plugin default of type stdout, v2.0 from /usr/lib/python2.7/dist-packages/ansible/plugins/callback/default.pyc

PLAYBOOK: test.yml \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*  
1 plays in test.yml

PLAY [junosdev] \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*  
META: ran handlers

TASK [collect default set of facts and configuration] \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*  
task path: /opt/workminuscode/ansiblePractice/try2/test.yml:5  
\<172.16.10.185\> attempting to start connection  
\<172.16.10.185\> using connection plugin network\_cli  
\<172.16.10.185\> local domain socket does not exist, starting it  
\<172.16.10.185\> control socket path is /home/vicky/.ansible/pc/77de749e3e  
\<172.16.10.185\>  
The full traceback is:  
Traceback (most recent call last):  
File “/usr/bin/ansible-connection”, line 106, in start  
self.connection.\_connect()  
File “/usr/lib/python2.7/dist-packages/ansible/plugins/connection/network\_cli.py”, line 333, in \_connect  
newline=self.\_terminal.terminal\_inital\_prompt\_newline)  
File “/usr/lib/python2.7/dist-packages/ansible/plugins/connection/network\_cli.py”, line 408, in receive  
data = self.\_ssh\_shell.recv(256)  
File “/home/vicky/.local/lib/python2.7/site-packages/paramiko/channel.py”, line 701, in recv  
raise socket.timeout()  
timeout

fatal: [172.16.10.185]: FAILED! =\> {  
“msg”: “”  
}  
to retry, use: --limit @/opt/workminuscode/ansiblePractice/try2/test.retry

PLAY RECAP \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*  
172.16.10.185 : ok=0 changed=0 unreachable=0 failed=1

------------------------------------------------------------------------------------------------------------------------------------------------------------USEFUL INFORMATION--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

The device which i am trying to manage is running JUNOS 17.1R1.8 Kernel 64-bit JNPR-10.3-20170209.344539\_build.

ansible version: 2.7.10  
python version: 2.7.15rc1

The direcroty structure is

.  
├── group\_vars  
│ └── junosdev.yml  
├── inv  
└── test.yml

Here is the playbook (test.ymll)content.

---

<div class="post-metadata">

**Author:** ![vicky.singh](https://avatars.discourse-cdn.com/v4/letter/v/c5a1d2/32.png) [@vicky.singh](https://forum.ansible.com/u/vicky.singh)\
**Post date:** [May 2, 2019, 6:30am UTC](https://forum.ansible.com/t/socket-timout-while-connecting-to-a-junos-devices-via-network-cli/30240/2 "2019-05-02T06:30:44Z")

</div>

There was some additional information in the log file (/opt/log/ansible.log), so posting its content

2019-05-02 11:58:58,802 p=7595 u=vicky | ansible-playbook 2.7.10  
config file = /etc/ansible/ansible.cfg  
configured module search path = [u’/home/vicky/.ansible/plugins/modules’, u’/usr/share/ansible/plugins/modules’]  
ansible python module location = /usr/lib/python2.7/dist-packages/ansible  
executable location = /usr/bin/ansible-playbook  
python version = 2.7.15rc1 (default, Nov 12 2018, 14:31:15) [GCC 7.3.0]  
2019-05-02 11:58:58,802 p=7595 u=vicky | Using /etc/ansible/ansible.cfg as config file  
2019-05-02 11:58:58,802 p=7595 u=vicky | setting up inventory plugins  
2019-05-02 11:58:58,836 p=7595 u=vicky | /opt/workminuscode/ansiblePractice/try2/inv did not meet host\_list requirements, check plugin documentation if this is unexpected  
2019-05-02 11:58:58,836 p=7595 u=vicky | /opt/workminuscode/ansiblePractice/try2/inv did not meet script requirements, check plugin documentation if this is unexpected  
2019-05-02 11:58:58,839 p=7595 u=vicky | Parsed /opt/workminuscode/ansiblePractice/try2/inv inventory source with ini plugin  
2019-05-02 11:58:58,916 p=7595 u=vicky | Loading callback plugin default of type stdout, v2.0 from /usr/lib/python2.7/dist-packages/ansible/plugins/callback/default.pyc  
2019-05-02 11:58:58,995 p=7595 u=vicky | PLAYBOOK: test.yml \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*  
2019-05-02 11:58:58,996 p=7595 u=vicky | 1 plays in test.yml  
2019-05-02 11:58:59,006 p=7595 u=vicky | PLAY [junosdev] \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*  
2019-05-02 11:58:59,010 p=7595 u=vicky | META: ran handlers  
2019-05-02 11:58:59,018 p=7595 u=vicky | TASK [collect default set of facts and configuration] \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*  
2019-05-02 11:58:59,019 p=7595 u=vicky | task path: /opt/workminuscode/ansiblePractice/try2/test.yml:5  
2019-05-02 11:58:59,384 p=7603 u=vicky | network\_os is set to junos  
2019-05-02 11:58:59,419 p=7610 u=vicky | paramiko [172.16.10.185] starting thread (client mode): 0x1b8acbd0L  
2019-05-02 11:58:59,419 p=7610 u=vicky | paramiko [172.16.10.185] Local version/idstring: SSH-2.0-paramiko\_2.4.2  
2019-05-02 11:58:59,435 p=7610 u=vicky | paramiko [172.16.10.185] Remote version/idstring: SSH-2.0-OpenSSH\_6.6.1  
2019-05-02 11:58:59,435 p=7610 u=vicky | paramiko [172.16.10.185] Connected (version 2.0, client OpenSSH\_6.6.1)  
2019-05-02 11:58:59,443 p=7610 u=vicky | paramiko [172.16.10.185] kex algos:[u’curve25519-sha256@libssh.org’, u’ecdh-sha2-nistp256’, u’ecdh-sha2-nistp384’, u’ecdh-sha2-nistp521’, u’diffie-hellman-group-exchange-sha256’, u’diffie-hellman-group-exchange-sha1’, u’diffie-hellman-group14-sha1’, u’diffie-hellman-group1-sha1’] server key:[u’ssh-rsa’, u’ssh-dss’, u’ecdsa-sha2-nistp256’, u’ssh-ed25519’] client encrypt:[u’aes128-ctr’, u’aes192-ctr’, u’aes256-ctr’, u’arcfour256’, u’arcfour128’, u’aes128-gcm@openssh.com’, u’aes256-gcm@openssh.com’, u’chacha20-poly1305@openssh.com’, u’aes128-cbc’, u’3des-cbc’, u’blowfish-cbc’, u’cast128-cbc’, u’aes192-cbc’, u’aes256-cbc’, u’arcfour’, u’rijndael-cbc@lysator.liu.se’] server encrypt:[u’aes128-ctr’, u’aes192-ctr’, u’aes256-ctr’, u’arcfour256’, u’arcfour128’, u’aes128-gcm@openssh.com’, u’aes256-gcm@openssh.com’, u’chacha20-poly1305@openssh.com’, u’aes128-cbc’, u’3des-cbc’, u’blowfish-cbc’, u’cast128-cbc’, u’aes192-cbc’, u’aes256-cbc’, u’arcfour’, u’rijndael-cbc@lysator.liu.se’] client mac:[u’hmac-md5-etm@openssh.com’, u’hmac-sha1-etm@openssh.com’, u’umac-64-etm@openssh.com’, u’umac-128-etm@openssh.com’, u’hmac-sha2-256-etm@openssh.com’, u’hmac-sha2-512-etm@openssh.com’, u’hmac-ripemd160-etm@openssh.com’, u’hmac-sha1-96-etm@openssh.com’, u’hmac-md5-96-etm@openssh.com’, u’hmac-md5’, u’hmac-sha1’, u’umac-64@openssh.com’, u’umac-128@openssh.com’, u’hmac-sha2-256’, u’hmac-sha2-256-96’, u’hmac-sha2-512’, u’hmac-sha2-512-96’, u’hmac-ripemd160’, u’hmac-ripemd160@openssh.com’, u’hmac-sha1-96’, u’hmac-md5-96’] server mac:[u’hmac-md5-etm@openssh.com’, u’hmac-sha1-etm@openssh.com’, u’umac-64-etm@openssh.com’, u’umac-128-etm@openssh.com’, u’hmac-sha2-256-etm@openssh.com’, u’hmac-sha2-512-etm@openssh.com’, u’hmac-ripemd160-etm@openssh.com’, u’hmac-sha1-96-etm@openssh.com’, u’hmac-md5-96-etm@openssh.com’, u’hmac-md5’, u’hmac-sha1’, u’umac-64@openssh.com’, u’umac-128@openssh.com’, u’hmac-sha2-256’, u’hmac-sha2-256-96’, u’hmac-sha2-512’, u’hmac-sha2-512-96’, u’hmac-ripemd160’, u’hmac-ripemd160@openssh.com’, u’hmac-sha1-96’, u’hmac-md5-96’] client compress:[u’none’, u’zlib@openssh.com’] server compress:[u’none’, u’zlib@openssh.com’] client lang:[u’‘] server lang:[u’'] kex follows?False  
2019-05-02 11:58:59,444 p=7610 u=vicky | paramiko [172.16.10.185] Kex agreed: ecdh-sha2-nistp256  
2019-05-02 11:58:59,444 p=7610 u=vicky | paramiko [172.16.10.185] HostKey agreed: ssh-ed25519  
2019-05-02 11:58:59,444 p=7610 u=vicky | paramiko [172.16.10.185] Cipher agreed: aes128-ctr  
2019-05-02 11:58:59,445 p=7610 u=vicky | paramiko [172.16.10.185] MAC agreed: hmac-sha2-256  
2019-05-02 11:58:59,447 p=7610 u=vicky | paramiko [172.16.10.185] Compression agreed: none  
2019-05-02 11:58:59,462 p=7610 u=vicky | paramiko [172.16.10.185] kex engine KexNistp256 specified hash\_algo   
2019-05-02 11:58:59,462 p=7610 u=vicky | paramiko [172.16.10.185] Switch to new keys …  
2019-05-02 11:58:59,567 p=7610 u=vicky | paramiko [172.16.10.185] userauth is OK  
2019-05-02 11:58:59,610 p=7610 u=vicky | paramiko [172.16.10.185] Authentication (password) successful!  
2019-05-02 11:58:59,615 p=7610 u=vicky | paramiko [172.16.10.185] [chan 0] Max packet in: 32768 bytes  
2019-05-02 11:58:59,618 p=7610 u=vicky | paramiko [172.16.10.185] [chan 0] Max packet out: 32768 bytes  
2019-05-02 11:58:59,618 p=7610 u=vicky | paramiko [172.16.10.185] Secsh channel 0 opened.  
2019-05-02 11:58:59,624 p=7610 u=vicky | paramiko [172.16.10.185] [chan 0] Sesch channel 0 request ok  
2019-05-02 11:58:59,631 p=7610 u=vicky | paramiko [172.16.10.185] [chan 0] Sesch channel 0 request ok  
2019-05-02 11:59:09,739 p=7595 u=vicky | The full traceback is:  
Traceback (most recent call last):  
File “/usr/bin/ansible-connection”, line 106, in start  
self.connection.\_connect()  
File “/usr/lib/python2.7/dist-packages/ansible/plugins/connection/network\_cli.py”, line 333, in \_connect  
newline=self.\_terminal.terminal\_inital\_prompt\_newline)  
File “/usr/lib/python2.7/dist-packages/ansible/plugins/connection/network\_cli.py”, line 408, in receive  
data = self.\_ssh\_shell.recv(256)  
File “/home/vicky/.local/lib/python2.7/site-packages/paramiko/channel.py”, line 701, in recv  
raise socket.timeout()  
timeout

2019-05-02 11:59:09,741 p=7595 u=vicky | fatal: [172.16.10.185]: FAILED! =\> {  
“msg”: “”  
}  
2019-05-02 11:59:09,742 p=7595 u=vicky | to retry, use: --limit @/opt/workminuscode/ansiblePractice/try2/test.retry

2019-05-02 11:59:09,742 p=7595 u=vicky | PLAY RECAP \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*  
2019-05-02 11:59:09,742 p=7595 u=vicky | 172.16.10.185 : ok=0 changed=0 unreachable=0 failed=1  
2019-05-02 11:59:09,808 p=7603 u=vicky | shutdown complete  
2019-05-02 11:59:09,811 p=7610 u=vicky | paramiko [172.16.10.185] EOF in transport thread

---

<div class="post-metadata">

**Author:** ![vicky.singh](https://avatars.discourse-cdn.com/v4/letter/v/c5a1d2/32.png) [@vicky.singh](https://forum.ansible.com/u/vicky.singh)\
**Post date:** [May 6, 2019, 7:30am UTC](https://forum.ansible.com/t/socket-timout-while-connecting-to-a-junos-devices-via-network-cli/30240/3 "2019-05-06T07:30:35Z")

</div>

For anyone going through a similar issue. Using paramiko\_ssh helped me progess further but i was still facing issues. Then i changed the connection to netconf and everything worked smoothly.
