File: __init__.py

package info (click to toggle)
libreswan 5.2-2.3
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 81,644 kB
  • sloc: ansic: 129,988; sh: 32,018; xml: 20,646; python: 10,303; makefile: 3,022; javascript: 1,506; sed: 574; yacc: 511; perl: 264; awk: 52
file content (82 lines) | stat: -rwxr-xr-x 2,217 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#!/usr/bin/env python3

# pexpect script to Install NetBSD base Domain
#
# Copyright (C) 2021 Andrew Cagney
#
# This program is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by the
# Free Software Foundation; either version 2 of the License, or (at your
# option) any later version.  See <https://www.gnu.org/licenses/gpl2.txt>.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
# or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
# for more details.

# Possibly useful reference:
# http://meta.libera.cc/2020/12/quick-netbsd-serial-console-install-on.html

import pexpect
import sys
import time
import os

FILTER_OUTPUT = False

def i(child):
    '''go interactive then quit'''
    child.logfile = None
    child.interact()
    sys.exit(0)

def rs(child, r, s):
    child.expect(r, timeout=None)
    for c in s:
        child.send(c)

def c(child, s):
    child.expect('\n# ', timeout=None)
    time.sleep(1)
    for c in s:
        child.send(c)
    child.send('\n')

# boot in single user mode (/ is RO)

def install_base(child, param):

    # Need to disable DDB's pager so things don't get stuck part way
    # through a panic.

    # Choices are:
    # 1. Boot normally
    # 2. Boot single user
    # 3. *Drop to boot prompt*
    rs(child, 'seconds', '3')

    # boot with both +enter-debugger and +single-user-mode
    rs(child, '> ', 'boot -d -s\n')

    # annoyingly the first thing DDB does is show registers but being
    # more than 24 lines; ends up waiting in the pager.
    rs(child, '--db_more--', ' ')

    # finally at the DDB prompt, set the pager's lines to zero and
    # then continue
    rs(child, 'db...> ', 'w db_max_line 0\n')
    rs(child, 'db...> ', 'continue\n')

    # Now resume the install

    rs(child, 'Enter pathname of shell or RETURN for /bin/sh:', '\n')
    # the above has only 4 seconds

    # Configure the created system using base.sh

    c(child, 'mount -rt cd9660 /dev/cd1 /mnt')
    c(child, '/bin/sh -x /mnt/base.sh')

    c(child, 'halt -p')

    sys.exit(child.wait())