2016-03-10 8 views
6

sto utilizzando systemd su Debian Jessie per controllare un servizio a cui sto alimentando variabili d'ambiente attraverso il file di EnvironmentFile=/etc/default/myservicesystemd, variabile multilinea in environmentfile, dove la nuova linea è significativo

in questo file che ho una variabile che è una chiave pubblica

JWT_PUB_KEY="-----BEGIN FOO BAR KEY----- 
    MIIBgjAcBgoqhkiG9w0BDAEDMA4ECKZesfWLQOiDAgID6ASCAWBu7izm8N4V 
    2puRO/Mdt+Y8ceywxiC0cE57nrbmvaTSvBwTg9b/xyd8YC6QK7lrhC9Njgp/ 
    ... 
    -----END FOO BAR KEY-----" 

mettendolo così non piacere a systemd, che segnala un errore (anche se facendo un source in bash dello stesso file funziona correttamente)

la documentazione di s rapporto ystemd che si può avere variabile righe ponendo fine ogni file con un \ ma che concatenare ogni linea (quindi il mio programma di ricevere il tutto sotto una linea, che non è più una chiave pubblica valida)

C'è un modo noto per preservare il fine linea? senza ricorrere a hack come mettere \n che li 'interpreta' nel mio codice applicazione?

risposta

0

Come sospettate, Systemd accetta \n all'interno delle definizioni delle variabili d'ambiente. Non è necessario eseguire un parsing speciale, è sufficiente aggiungere gli appropriati \n s dove sono necessari e sfuggire alle nuove righe. Systemd dovrebbe gestire il resto e trasformarli in un letterale linefeed. Nel tuo caso questo sarebbe simile a questa:

JWT_PUB_KEY="-----BEGIN FOO BAR KEY-----\n\ 
MIIBgjAcBgoqhkiG9w0BDAEDMA4ECKZesfWLQOiDAgID6ASCAWBu7izm8N4V\n\ 
2puRO/Mdt+Y8ceywxiC0cE57nrbmvaTSvBwTg9b/xyd8YC6QK7lrhC9Njgp/\n\ 
...\n\ 
-----END FOO BAR KEY-----" 
+0

permettimi di testarlo di nuovo, penso di aver provato questa combinazione, perché ho finito con '\\ n \' ma è passato molto tempo quindi potrei aver trascurato –

+0

\\ n risulterebbe nell'analisi del personaggio '\' e analizzando il carattere 'n' invece del carattere di nuova riga '\ n' – Av4t4r

+1

@Vality, in realtà non funziona, quando lo faccio, e poi stampo in python ho ottenuto l'intera variabile in una riga –

0

Non si dovrebbe avere a interpretare (? Analizzare) i caratteri di nuova riga sul finale, che dovrebbe avvenire automaticamente tutto, as explained here, il che significa che l'aggiunta di '\ n' alla fine di ogni linea dovrebbe fare il trucco.

Problemi correlati